!function(t, e) {
    "object" == typeof exports && "undefined" != typeof module ? e(exports) : "function" == typeof define && define.amd ? define([ "exports" ], e) : e(t.echarts = {});
}(this, function(t) {
    "use strict";
    function e(t) {
        var e = {}, n = {}, i = t.match(/Firefox\/([\d.]+)/), r = t.match(/MSIE\s([\d.]+)/) || t.match(/Trident\/.+?rv:(([\d.]+))/), a = t.match(/Edge\/([\d.]+)/), o = /micromessenger/i.test(t);
        return i && (n.firefox = !0, n.version = i[1]), r && (n.ie = !0, n.version = r[1]), 
        a && (n.edge = !0, n.version = a[1]), o && (n.weChat = !0), {
            browser: n,
            os: e,
            node: !1,
            canvasSupported: !!document.createElement("canvas").getContext,
            svgSupported: "undefined" != typeof SVGRect,
            touchEventsSupported: "ontouchstart" in window && !n.ie && !n.edge,
            pointerEventsSupported: "onpointerdown" in window && (n.edge || n.ie && n.version >= 11),
            domSupported: "undefined" != typeof document
        };
    }
    function n(t, e) {
        "createCanvas" === t && (cf = null), uf[t] = e;
    }
    function i(t) {
        if (null == t || "object" != typeof t) return t;
        var e = t, n = ef.call(t);
        if ("[object Array]" === n) {
            if (!z(t)) {
                e = [];
                for (var r = 0, a = t.length; a > r; r++) e[r] = i(t[r]);
            }
        } else if (tf[n]) {
            if (!z(t)) {
                var o = t.constructor;
                if (t.constructor.from) e = o.from(t); else {
                    e = new o(t.length);
                    for (var r = 0, a = t.length; a > r; r++) e[r] = i(t[r]);
                }
            }
        } else if (!Jc[n] && !z(t) && !C(t)) {
            e = {};
            for (var s in t) t.hasOwnProperty(s) && (e[s] = i(t[s]));
        }
        return e;
    }
    function r(t, e, n) {
        if (!S(e) || !S(t)) return n ? i(e) : t;
        for (var a in e) if (e.hasOwnProperty(a)) {
            var o = t[a], s = e[a];
            !S(s) || !S(o) || x(s) || x(o) || C(s) || C(o) || M(s) || M(o) || z(s) || z(o) ? !n && a in t || (t[a] = i(e[a], !0)) : r(o, s, n);
        }
        return t;
    }
    function a(t, e) {
        for (var n = t[0], i = 1, a = t.length; a > i; i++) n = r(n, t[i], e);
        return n;
    }
    function o(t, e) {
        for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n]);
        return t;
    }
    function s(t, e, n) {
        for (var i in e) e.hasOwnProperty(i) && (n ? null != e[i] : null == t[i]) && (t[i] = e[i]);
        return t;
    }
    function l() {
        return cf || (cf = hf().getContext("2d")), cf;
    }
    function u(t, e) {
        if (t) {
            if (t.indexOf) return t.indexOf(e);
            for (var n = 0, i = t.length; i > n; n++) if (t[n] === e) return n;
        }
        return -1;
    }
    function h(t, e) {
        function n() {}
        var i = t.prototype;
        n.prototype = e.prototype, t.prototype = new n();
        for (var r in i) i.hasOwnProperty(r) && (t.prototype[r] = i[r]);
        t.prototype.constructor = t, t.superClass = e;
    }
    function c(t, e, n) {
        t = "prototype" in t ? t.prototype : t, e = "prototype" in e ? e.prototype : e, 
        s(t, e, n);
    }
    function f(t) {
        return t ? "string" == typeof t ? !1 : "number" == typeof t.length : void 0;
    }
    function d(t, e, n) {
        if (t && e) if (t.forEach && t.forEach === rf) t.forEach(e, n); else if (t.length === +t.length) for (var i = 0, r = t.length; r > i; i++) e.call(n, t[i], i, t); else for (var a in t) t.hasOwnProperty(a) && e.call(n, t[a], a, t);
    }
    function p(t, e, n) {
        if (t && e) {
            if (t.map && t.map === sf) return t.map(e, n);
            for (var i = [], r = 0, a = t.length; a > r; r++) i.push(e.call(n, t[r], r, t));
            return i;
        }
    }
    function g(t, e, n, i) {
        if (t && e) {
            if (t.reduce && t.reduce === lf) return t.reduce(e, n, i);
            for (var r = 0, a = t.length; a > r; r++) n = e.call(i, n, t[r], r, t);
            return n;
        }
    }
    function v(t, e, n) {
        if (t && e) {
            if (t.filter && t.filter === af) return t.filter(e, n);
            for (var i = [], r = 0, a = t.length; a > r; r++) e.call(n, t[r], r, t) && i.push(t[r]);
            return i;
        }
    }
    function m(t, e, n) {
        if (t && e) for (var i = 0, r = t.length; r > i; i++) if (e.call(n, t[i], i, t)) return t[i];
    }
    function y(t, e) {
        var n = of.call(arguments, 2);
        return function() {
            return t.apply(e, n.concat(of.call(arguments)));
        };
    }
    function _(t) {
        var e = of.call(arguments, 1);
        return function() {
            return t.apply(this, e.concat(of.call(arguments)));
        };
    }
    function x(t) {
        return "[object Array]" === ef.call(t);
    }
    function w(t) {
        return "function" == typeof t;
    }
    function b(t) {
        return "[object String]" === ef.call(t);
    }
    function S(t) {
        var e = typeof t;
        return "function" === e || !!t && "object" === e;
    }
    function M(t) {
        return !!Jc[ef.call(t)];
    }
    function T(t) {
        return !!tf[ef.call(t)];
    }
    function C(t) {
        return "object" == typeof t && "number" == typeof t.nodeType && "object" == typeof t.ownerDocument;
    }
    function k(t) {
        return t !== t;
    }
    function I() {
        for (var t = 0, e = arguments.length; e > t; t++) if (null != arguments[t]) return arguments[t];
    }
    function D(t, e) {
        return null != t ? t : e;
    }
    function A(t, e, n) {
        return null != t ? t : null != e ? e : n;
    }
    function P() {
        return Function.call.apply(of, arguments);
    }
    function O(t) {
        if ("number" == typeof t) return [ t, t, t, t ];
        var e = t.length;
        return 2 === e ? [ t[0], t[1], t[0], t[1] ] : 3 === e ? [ t[0], t[1], t[2], t[1] ] : t;
    }
    function L(t, e) {
        if (!t) throw new Error(e);
    }
    function E(t) {
        return null == t ? null : "function" == typeof t.trim ? t.trim() : t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");
    }
    function B(t) {
        t[ff] = !0;
    }
    function z(t) {
        return t[ff];
    }
    function R(t) {
        function e(t, e) {
            n ? i.set(t, e) : i.set(e, t);
        }
        var n = x(t);
        this.data = {};
        var i = this;
        t instanceof R ? t.each(e) : t && d(t, e);
    }
    function F(t) {
        return new R(t);
    }
    function N(t, e) {
        for (var n = new t.constructor(t.length + e.length), i = 0; i < t.length; i++) n[i] = t[i];
        var r = t.length;
        for (i = 0; i < e.length; i++) n[i + r] = e[i];
        return n;
    }
    function V() {}
    function H(t, e) {
        var n = new pf(2);
        return null == t && (t = 0), null == e && (e = 0), n[0] = t, n[1] = e, n;
    }
    function W(t, e) {
        return t[0] = e[0], t[1] = e[1], t;
    }
    function G(t) {
        var e = new pf(2);
        return e[0] = t[0], e[1] = t[1], e;
    }
    function X(t, e, n) {
        return t[0] = e, t[1] = n, t;
    }
    function q(t, e, n) {
        return t[0] = e[0] + n[0], t[1] = e[1] + n[1], t;
    }
    function j(t, e, n, i) {
        return t[0] = e[0] + n[0] * i, t[1] = e[1] + n[1] * i, t;
    }
    function U(t, e, n) {
        return t[0] = e[0] - n[0], t[1] = e[1] - n[1], t;
    }
    function Y(t) {
        return Math.sqrt(Z(t));
    }
    function Z(t) {
        return t[0] * t[0] + t[1] * t[1];
    }
    function $(t, e, n) {
        return t[0] = e[0] * n[0], t[1] = e[1] * n[1], t;
    }
    function K(t, e, n) {
        return t[0] = e[0] / n[0], t[1] = e[1] / n[1], t;
    }
    function Q(t, e) {
        return t[0] * e[0] + t[1] * e[1];
    }
    function J(t, e, n) {
        return t[0] = e[0] * n, t[1] = e[1] * n, t;
    }
    function te(t, e) {
        var n = Y(e);
        return 0 === n ? (t[0] = 0, t[1] = 0) : (t[0] = e[0] / n, t[1] = e[1] / n), t;
    }
    function ee(t, e) {
        return Math.sqrt((t[0] - e[0]) * (t[0] - e[0]) + (t[1] - e[1]) * (t[1] - e[1]));
    }
    function ne(t, e) {
        return (t[0] - e[0]) * (t[0] - e[0]) + (t[1] - e[1]) * (t[1] - e[1]);
    }
    function ie(t, e) {
        return t[0] = -e[0], t[1] = -e[1], t;
    }
    function re(t, e, n, i) {
        return t[0] = e[0] + i * (n[0] - e[0]), t[1] = e[1] + i * (n[1] - e[1]), t;
    }
    function ae(t, e, n) {
        var i = e[0], r = e[1];
        return t[0] = n[0] * i + n[2] * r + n[4], t[1] = n[1] * i + n[3] * r + n[5], t;
    }
    function oe(t, e, n) {
        return t[0] = Math.min(e[0], n[0]), t[1] = Math.min(e[1], n[1]), t;
    }
    function se(t, e, n) {
        return t[0] = Math.max(e[0], n[0]), t[1] = Math.max(e[1], n[1]), t;
    }
    function le() {
        this.on("mousedown", this._dragStart, this), this.on("mousemove", this._drag, this), 
        this.on("mouseup", this._dragEnd, this), this.on("globalout", this._dragEnd, this);
    }
    function ue(t, e) {
        return {
            target: t,
            topTarget: e && e.topTarget
        };
    }
    function he(t, e) {
        var n = t._$eventProcessor;
        return null != e && n && n.normalizeQuery && (e = n.normalizeQuery(e)), e;
    }
    function ce(t, e, n, i, r, a) {
        var o = t._$handlers;
        if ("function" == typeof n && (r = i, i = n, n = null), !i || !e) return t;
        n = he(t, n), o[e] || (o[e] = []);
        for (var s = 0; s < o[e].length; s++) if (o[e][s].h === i) return t;
        var l = {
            h: i,
            one: a,
            query: n,
            ctx: r || t,
            callAtLast: i.zrEventfulCallAtLast
        }, u = o[e].length - 1, h = o[e][u];
        return h && h.callAtLast ? o[e].splice(u, 0, l) : o[e].push(l), t;
    }
    function fe(t, e, n, i, r, a) {
        var o = i + "-" + r, s = t.length;
        if (a.hasOwnProperty(o)) return a[o];
        if (1 === e) {
            var l = Math.round(Math.log((1 << s) - 1 & ~r) / bf);
            return t[n][l];
        }
        for (var u = i | 1 << n, h = n + 1; i & 1 << h; ) h++;
        for (var c = 0, f = 0, d = 0; s > f; f++) {
            var p = 1 << f;
            p & r || (c += (d % 2 ? -1 : 1) * t[n][f] * fe(t, e - 1, h, u, r | p, a), d++);
        }
        return a[o] = c, c;
    }
    function de(t, e) {
        var n = [ [ t[0], t[1], 1, 0, 0, 0, -e[0] * t[0], -e[0] * t[1] ], [ 0, 0, 0, t[0], t[1], 1, -e[1] * t[0], -e[1] * t[1] ], [ t[2], t[3], 1, 0, 0, 0, -e[2] * t[2], -e[2] * t[3] ], [ 0, 0, 0, t[2], t[3], 1, -e[3] * t[2], -e[3] * t[3] ], [ t[4], t[5], 1, 0, 0, 0, -e[4] * t[4], -e[4] * t[5] ], [ 0, 0, 0, t[4], t[5], 1, -e[5] * t[4], -e[5] * t[5] ], [ t[6], t[7], 1, 0, 0, 0, -e[6] * t[6], -e[6] * t[7] ], [ 0, 0, 0, t[6], t[7], 1, -e[7] * t[6], -e[7] * t[7] ] ], i = {}, r = fe(n, 8, 0, 0, 0, i);
        if (0 !== r) {
            for (var a = [], o = 0; 8 > o; o++) for (var s = 0; 8 > s; s++) null == a[s] && (a[s] = 0), 
            a[s] += ((o + s) % 2 ? -1 : 1) * fe(n, 7, 0 === o ? 1 : 0, 1 << o, 1 << s, i) / r * e[o];
            return function(t, e, n) {
                var i = e * a[6] + n * a[7] + 1;
                t[0] = (e * a[0] + n * a[1] + a[2]) / i, t[1] = (e * a[3] + n * a[4] + a[5]) / i;
            };
        }
    }
    function pe(t, e, n, i) {
        return n = n || {}, i || !Qc.canvasSupported ? ge(t, e, n) : Qc.browser.firefox && null != e.layerX && e.layerX !== e.offsetX ? (n.zrX = e.layerX, 
        n.zrY = e.layerY) : null != e.offsetX ? (n.zrX = e.offsetX, n.zrY = e.offsetY) : ge(t, e, n), 
        n;
    }
    function ge(t, e, n) {
        if (t.getBoundingClientRect && Qc.domSupported) {
            var i = e.clientX, r = e.clientY;
            if ("CANVAS" === t.nodeName.toUpperCase()) {
                var a = t.getBoundingClientRect();
                return n.zrX = i - a.left, void (n.zrY = r - a.top);
            }
            var o = t[Tf] || (t[Tf] = {}), s = me(ve(t, o), o);
            if (s) return s(Cf, i, r), n.zrX = Cf[0], void (n.zrY = Cf[1]);
        }
        n.zrX = n.zrY = 0;
    }
    function ve(t, e) {
        var n = e.markers;
        if (n) return n;
        n = e.markers = [];
        for (var i = [ "left", "right" ], r = [ "top", "bottom" ], a = 0; 4 > a; a++) {
            var o = document.createElement("div"), s = o.style, l = a % 2, u = (a >> 1) % 2;
            s.cssText = [ "position:absolute", "visibility: hidden", "padding: 0", "margin: 0", "border-width: 0", "width:0", "height:0", i[l] + ":0", r[u] + ":0", i[1 - l] + ":auto", r[1 - u] + ":auto", "" ].join("!important;"), 
            t.appendChild(o), n.push(o);
        }
        return n;
    }
    function me(t, e) {
        for (var n = e.transformer, i = e.srcCoords, r = !0, a = [], o = [], s = 0; 4 > s; s++) {
            var l = t[s].getBoundingClientRect(), u = 2 * s, h = l.left, c = l.top;
            a.push(h, c), r &= i && h === i[u] && c === i[u + 1], o.push(t[s].offsetLeft, t[s].offsetTop);
        }
        return r ? n : (e.srcCoords = a, e.transformer = de(a, o));
    }
    function ye(t, e, n) {
        if (e = e || window.event, null != e.zrX) return e;
        var i = e.type, r = i && i.indexOf("touch") >= 0;
        if (r) {
            var a = "touchend" !== i ? e.targetTouches[0] : e.changedTouches[0];
            a && pe(t, a, e, n);
        } else pe(t, e, e, n), e.zrDelta = e.wheelDelta ? e.wheelDelta / 120 : -(e.detail || 0) / 3;
        var o = e.button;
        return null == e.which && void 0 !== o && Mf.test(e.type) && (e.which = 1 & o ? 1 : 2 & o ? 3 : 4 & o ? 2 : 0), 
        e;
    }
    function _e(t, e, n) {
        Sf ? t.addEventListener(e, n) : t.attachEvent("on" + e, n);
    }
    function xe(t, e, n) {
        Sf ? t.removeEventListener(e, n) : t.detachEvent("on" + e, n);
    }
    function we(t) {
        var e = t[1][0] - t[0][0], n = t[1][1] - t[0][1];
        return Math.sqrt(e * e + n * n);
    }
    function be(t) {
        return [ (t[0][0] + t[1][0]) / 2, (t[0][1] + t[1][1]) / 2 ];
    }
    function Se(t, e, n) {
        return {
            type: t,
            event: n,
            target: e.target,
            topTarget: e.topTarget,
            cancelBubble: !1,
            offsetX: n.zrX,
            offsetY: n.zrY,
            gestureEvent: n.gestureEvent,
            pinchX: n.pinchX,
            pinchY: n.pinchY,
            pinchScale: n.pinchScale,
            wheelDelta: n.zrDelta,
            zrByTouch: n.zrByTouch,
            which: n.which,
            stop: Me
        };
    }
    function Me() {
        kf(this.event);
    }
    function Te() {}
    function Ce(t, e, n) {
        if (t[t.rectHover ? "rectContain" : "contain"](e, n)) {
            for (var i, r = t; r; ) {
                if (r.clipPath && !r.clipPath.contain(e, n)) return !1;
                r.silent && (i = !0), r = r.parent;
            }
            return i ? Af : !0;
        }
        return !1;
    }
    function ke() {
        var t = new Lf(6);
        return Ie(t), t;
    }
    function Ie(t) {
        return t[0] = 1, t[1] = 0, t[2] = 0, t[3] = 1, t[4] = 0, t[5] = 0, t;
    }
    function De(t, e) {
        return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t[4] = e[4], t[5] = e[5], 
        t;
    }
    function Ae(t, e, n) {
        var i = e[0] * n[0] + e[2] * n[1], r = e[1] * n[0] + e[3] * n[1], a = e[0] * n[2] + e[2] * n[3], o = e[1] * n[2] + e[3] * n[3], s = e[0] * n[4] + e[2] * n[5] + e[4], l = e[1] * n[4] + e[3] * n[5] + e[5];
        return t[0] = i, t[1] = r, t[2] = a, t[3] = o, t[4] = s, t[5] = l, t;
    }
    function Pe(t, e, n) {
        return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t[4] = e[4] + n[0], t[5] = e[5] + n[1], 
        t;
    }
    function Oe(t, e, n) {
        var i = e[0], r = e[2], a = e[4], o = e[1], s = e[3], l = e[5], u = Math.sin(n), h = Math.cos(n);
        return t[0] = i * h + o * u, t[1] = -i * u + o * h, t[2] = r * h + s * u, t[3] = -r * u + h * s, 
        t[4] = h * a + u * l, t[5] = h * l - u * a, t;
    }
    function Le(t, e, n) {
        var i = n[0], r = n[1];
        return t[0] = e[0] * i, t[1] = e[1] * r, t[2] = e[2] * i, t[3] = e[3] * r, t[4] = e[4] * i, 
        t[5] = e[5] * r, t;
    }
    function Ee(t, e) {
        var n = e[0], i = e[2], r = e[4], a = e[1], o = e[3], s = e[5], l = n * o - a * i;
        return l ? (l = 1 / l, t[0] = o * l, t[1] = -a * l, t[2] = -i * l, t[3] = n * l, 
        t[4] = (i * s - o * r) * l, t[5] = (a * r - n * s) * l, t) : null;
    }
    function Be(t) {
        var e = ke();
        return De(e, t), e;
    }
    function ze(t) {
        return t > zf || -zf > t;
    }
    function Re(t) {
        this._target = t.target, this._life = t.life || 1e3, this._delay = t.delay || 0, 
        this._initialized = !1, this.loop = null == t.loop ? !1 : t.loop, this.gap = t.gap || 0, 
        this.easing = t.easing || "Linear", this.onframe = t.onframe, this.ondestroy = t.ondestroy, 
        this.onrestart = t.onrestart, this._pausedTime = 0, this._paused = !1;
    }
    function Fe(t) {
        return t = Math.round(t), 0 > t ? 0 : t > 255 ? 255 : t;
    }
    function Ne(t) {
        return t = Math.round(t), 0 > t ? 0 : t > 360 ? 360 : t;
    }
    function Ve(t) {
        return 0 > t ? 0 : t > 1 ? 1 : t;
    }
    function He(t) {
        return Fe(t.length && "%" === t.charAt(t.length - 1) ? parseFloat(t) / 100 * 255 : parseInt(t, 10));
    }
    function We(t) {
        return Ve(t.length && "%" === t.charAt(t.length - 1) ? parseFloat(t) / 100 : parseFloat(t));
    }
    function Ge(t, e, n) {
        return 0 > n ? n += 1 : n > 1 && (n -= 1), 1 > 6 * n ? t + (e - t) * n * 6 : 1 > 2 * n ? e : 2 > 3 * n ? t + (e - t) * (2 / 3 - n) * 6 : t;
    }
    function Xe(t, e, n) {
        return t + (e - t) * n;
    }
    function qe(t, e, n, i, r) {
        return t[0] = e, t[1] = n, t[2] = i, t[3] = r, t;
    }
    function je(t, e) {
        return t[0] = e[0], t[1] = e[1], t[2] = e[2], t[3] = e[3], t;
    }
    function Ue(t, e) {
        $f && je($f, e), $f = Zf.put(t, $f || e.slice());
    }
    function Ye(t, e) {
        if (t) {
            e = e || [];
            var n = Zf.get(t);
            if (n) return je(e, n);
            t += "";
            var i = t.replace(/ /g, "").toLowerCase();
            if (i in Yf) return je(e, Yf[i]), Ue(t, e), e;
            if ("#" !== i.charAt(0)) {
                var r = i.indexOf("("), a = i.indexOf(")");
                if (-1 !== r && a + 1 === i.length) {
                    var o = i.substr(0, r), s = i.substr(r + 1, a - (r + 1)).split(","), l = 1;
                    switch (o) {
                      case "rgba":
                        if (4 !== s.length) return void qe(e, 0, 0, 0, 1);
                        l = We(s.pop());

                      case "rgb":
                        return 3 !== s.length ? void qe(e, 0, 0, 0, 1) : (qe(e, He(s[0]), He(s[1]), He(s[2]), l), 
                        Ue(t, e), e);

                      case "hsla":
                        return 4 !== s.length ? void qe(e, 0, 0, 0, 1) : (s[3] = We(s[3]), Ze(s, e), Ue(t, e), 
                        e);

                      case "hsl":
                        return 3 !== s.length ? void qe(e, 0, 0, 0, 1) : (Ze(s, e), Ue(t, e), e);

                      default:
                        return;
                    }
                }
                qe(e, 0, 0, 0, 1);
            } else {
                if (4 === i.length) {
                    var u = parseInt(i.substr(1), 16);
                    return u >= 0 && 4095 >= u ? (qe(e, (3840 & u) >> 4 | (3840 & u) >> 8, 240 & u | (240 & u) >> 4, 15 & u | (15 & u) << 4, 1), 
                    Ue(t, e), e) : void qe(e, 0, 0, 0, 1);
                }
                if (7 === i.length) {
                    var u = parseInt(i.substr(1), 16);
                    return u >= 0 && 16777215 >= u ? (qe(e, (16711680 & u) >> 16, (65280 & u) >> 8, 255 & u, 1), 
                    Ue(t, e), e) : void qe(e, 0, 0, 0, 1);
                }
            }
        }
    }
    function Ze(t, e) {
        var n = (parseFloat(t[0]) % 360 + 360) % 360 / 360, i = We(t[1]), r = We(t[2]), a = .5 >= r ? r * (i + 1) : r + i - r * i, o = 2 * r - a;
        return e = e || [], qe(e, Fe(255 * Ge(o, a, n + 1 / 3)), Fe(255 * Ge(o, a, n)), Fe(255 * Ge(o, a, n - 1 / 3)), 1), 
        4 === t.length && (e[3] = t[3]), e;
    }
    function $e(t) {
        if (t) {
            var e, n, i = t[0] / 255, r = t[1] / 255, a = t[2] / 255, o = Math.min(i, r, a), s = Math.max(i, r, a), l = s - o, u = (s + o) / 2;
            if (0 === l) e = 0, n = 0; else {
                n = .5 > u ? l / (s + o) : l / (2 - s - o);
                var h = ((s - i) / 6 + l / 2) / l, c = ((s - r) / 6 + l / 2) / l, f = ((s - a) / 6 + l / 2) / l;
                i === s ? e = f - c : r === s ? e = 1 / 3 + h - f : a === s && (e = 2 / 3 + c - h), 
                0 > e && (e += 1), e > 1 && (e -= 1);
            }
            var d = [ 360 * e, n, u ];
            return null != t[3] && d.push(t[3]), d;
        }
    }
    function Ke(t, e) {
        var n = Ye(t);
        if (n) {
            for (var i = 0; 3 > i; i++) n[i] = 0 > e ? n[i] * (1 - e) | 0 : (255 - n[i]) * e + n[i] | 0, 
            n[i] > 255 ? n[i] = 255 : t[i] < 0 && (n[i] = 0);
            return rn(n, 4 === n.length ? "rgba" : "rgb");
        }
    }
    function Qe(t) {
        var e = Ye(t);
        return e ? ((1 << 24) + (e[0] << 16) + (e[1] << 8) + +e[2]).toString(16).slice(1) : void 0;
    }
    function Je(t, e, n) {
        if (e && e.length && t >= 0 && 1 >= t) {
            n = n || [];
            var i = t * (e.length - 1), r = Math.floor(i), a = Math.ceil(i), o = e[r], s = e[a], l = i - r;
            return n[0] = Fe(Xe(o[0], s[0], l)), n[1] = Fe(Xe(o[1], s[1], l)), n[2] = Fe(Xe(o[2], s[2], l)), 
            n[3] = Ve(Xe(o[3], s[3], l)), n;
        }
    }
    function tn(t, e, n) {
        if (e && e.length && t >= 0 && 1 >= t) {
            var i = t * (e.length - 1), r = Math.floor(i), a = Math.ceil(i), o = Ye(e[r]), s = Ye(e[a]), l = i - r, u = rn([ Fe(Xe(o[0], s[0], l)), Fe(Xe(o[1], s[1], l)), Fe(Xe(o[2], s[2], l)), Ve(Xe(o[3], s[3], l)) ], "rgba");
            return n ? {
                color: u,
                leftIndex: r,
                rightIndex: a,
                value: i
            } : u;
        }
    }
    function en(t, e, n, i) {
        return t = Ye(t), t ? (t = $e(t), null != e && (t[0] = Ne(e)), null != n && (t[1] = We(n)), 
        null != i && (t[2] = We(i)), rn(Ze(t), "rgba")) : void 0;
    }
    function nn(t, e) {
        return t = Ye(t), t && null != e ? (t[3] = Ve(e), rn(t, "rgba")) : void 0;
    }
    function rn(t, e) {
        if (t && t.length) {
            var n = t[0] + "," + t[1] + "," + t[2];
            return ("rgba" === e || "hsva" === e || "hsla" === e) && (n += "," + t[3]), e + "(" + n + ")";
        }
    }
    function an(t, e) {
        return t[e];
    }
    function on(t, e, n) {
        t[e] = n;
    }
    function sn(t, e, n) {
        return (e - t) * n + t;
    }
    function ln(t, e, n) {
        return n > .5 ? e : t;
    }
    function un(t, e, n, i, r) {
        var a = t.length;
        if (1 === r) for (var o = 0; a > o; o++) i[o] = sn(t[o], e[o], n); else for (var s = a && t[0].length, o = 0; a > o; o++) for (var l = 0; s > l; l++) i[o][l] = sn(t[o][l], e[o][l], n);
    }
    function hn(t, e, n) {
        var i = t.length, r = e.length;
        if (i !== r) {
            var a = i > r;
            if (a) t.length = r; else for (var o = i; r > o; o++) t.push(1 === n ? e[o] : td.call(e[o]));
        }
        for (var s = t[0] && t[0].length, o = 0; o < t.length; o++) if (1 === n) isNaN(t[o]) && (t[o] = e[o]); else for (var l = 0; s > l; l++) isNaN(t[o][l]) && (t[o][l] = e[o][l]);
    }
    function cn(t, e, n) {
        if (t === e) return !0;
        var i = t.length;
        if (i !== e.length) return !1;
        if (1 === n) {
            for (var r = 0; i > r; r++) if (t[r] !== e[r]) return !1;
        } else for (var a = t[0].length, r = 0; i > r; r++) for (var o = 0; a > o; o++) if (t[r][o] !== e[r][o]) return !1;
        return !0;
    }
    function fn(t, e, n, i, r, a, o, s, l) {
        var u = t.length;
        if (1 === l) for (var h = 0; u > h; h++) s[h] = dn(t[h], e[h], n[h], i[h], r, a, o); else for (var c = t[0].length, h = 0; u > h; h++) for (var f = 0; c > f; f++) s[h][f] = dn(t[h][f], e[h][f], n[h][f], i[h][f], r, a, o);
    }
    function dn(t, e, n, i, r, a, o) {
        var s = .5 * (n - t), l = .5 * (i - e);
        return (2 * (e - n) + s + l) * o + (-3 * (e - n) - 2 * s - l) * a + s * r + e;
    }
    function pn(t) {
        if (f(t)) {
            var e = t.length;
            if (f(t[0])) {
                for (var n = [], i = 0; e > i; i++) n.push(td.call(t[i]));
                return n;
            }
            return td.call(t);
        }
        return t;
    }
    function gn(t) {
        return t[0] = Math.floor(t[0]), t[1] = Math.floor(t[1]), t[2] = Math.floor(t[2]), 
        "rgba(" + t.join(",") + ")";
    }
    function vn(t) {
        var e = t[t.length - 1].value;
        return f(e && e[0]) ? 2 : 1;
    }
    function mn(t, e, n, i, r, a) {
        var o = t._getter, s = t._setter, l = "spline" === e, u = i.length;
        if (u) {
            var h, c = i[0].value, d = f(c), p = !1, g = !1, v = d ? vn(i) : 0;
            i.sort(function(t, e) {
                return t.time - e.time;
            }), h = i[u - 1].time;
            for (var m = [], y = [], _ = i[0].value, x = !0, w = 0; u > w; w++) {
                m.push(i[w].time / h);
                var b = i[w].value;
                if (d && cn(b, _, v) || !d && b === _ || (x = !1), _ = b, "string" == typeof b) {
                    var S = Ye(b);
                    S ? (b = S, p = !0) : g = !0;
                }
                y.push(b);
            }
            if (a || !x) {
                for (var M = y[u - 1], w = 0; u - 1 > w; w++) d ? hn(y[w], M, v) : !isNaN(y[w]) || isNaN(M) || g || p || (y[w] = M);
                d && hn(o(t._target, r), M, v);
                var T, C, k, I, D, A, P = 0, O = 0;
                if (p) var L = [ 0, 0, 0, 0 ];
                var E = function(t, e) {
                    var n;
                    if (0 > e) n = 0; else if (O > e) {
                        for (T = Math.min(P + 1, u - 1), n = T; n >= 0 && !(m[n] <= e); n--) ;
                        n = Math.min(n, u - 2);
                    } else {
                        for (n = P; u > n && !(m[n] > e); n++) ;
                        n = Math.min(n - 1, u - 2);
                    }
                    P = n, O = e;
                    var i = m[n + 1] - m[n];
                    if (0 !== i) if (C = (e - m[n]) / i, l) if (I = y[n], k = y[0 === n ? n : n - 1], 
                    D = y[n > u - 2 ? u - 1 : n + 1], A = y[n > u - 3 ? u - 1 : n + 2], d) fn(k, I, D, A, C, C * C, C * C * C, o(t, r), v); else {
                        var a;
                        if (p) a = fn(k, I, D, A, C, C * C, C * C * C, L, 1), a = gn(L); else {
                            if (g) return ln(I, D, C);
                            a = dn(k, I, D, A, C, C * C, C * C * C);
                        }
                        s(t, r, a);
                    } else if (d) un(y[n], y[n + 1], C, o(t, r), v); else {
                        var a;
                        if (p) un(y[n], y[n + 1], C, L, 1), a = gn(L); else {
                            if (g) return ln(y[n], y[n + 1], C);
                            a = sn(y[n], y[n + 1], C);
                        }
                        s(t, r, a);
                    }
                }, B = new Re({
                    target: t._target,
                    life: h,
                    loop: t._loop,
                    delay: t._delay,
                    onframe: E,
                    ondestroy: n
                });
                return e && "spline" !== e && (B.easing = e), B;
            }
        }
    }
    function yn(t, e, n, i, r, a, o, s) {
        function l() {
            h--, h || a && a();
        }
        b(i) ? (a = r, r = i, i = 0) : w(r) ? (a = r, r = "linear", i = 0) : w(i) ? (a = i, 
        i = 0) : w(n) ? (a = n, n = 500) : n || (n = 500), t.stopAnimation(), _n(t, "", t, e, n, i, s);
        var u = t.animators.slice(), h = u.length;
        h || a && a();
        for (var c = 0; c < u.length; c++) u[c].done(l).start(r, o);
    }
    function _n(t, e, n, i, r, a, o) {
        var s = {}, l = 0;
        for (var u in i) i.hasOwnProperty(u) && (null != n[u] ? S(i[u]) && !f(i[u]) ? _n(t, e ? e + "." + u : u, n[u], i[u], r, a, o) : (o ? (s[u] = n[u], 
        xn(t, e, u, i[u])) : s[u] = i[u], l++) : null == i[u] || o || xn(t, e, u, i[u]));
        l > 0 && t.animate(e, !1).when(null == r ? 500 : r, s).delay(a || 0);
    }
    function xn(t, e, n, i) {
        if (e) {
            var r = {};
            r[e] = {}, r[e][n] = i, t.attr(r);
        } else t.attr(n, i);
    }
    function wn(t, e, n, i) {
        0 > n && (t += n, n = -n), 0 > i && (e += i, i = -i), this.x = t, this.y = e, this.width = n, 
        this.height = i;
    }
    function bn(t) {
        for (var e = 0; t >= dd; ) e |= 1 & t, t >>= 1;
        return t + e;
    }
    function Sn(t, e, n, i) {
        var r = e + 1;
        if (r === n) return 1;
        if (i(t[r++], t[e]) < 0) {
            for (;n > r && i(t[r], t[r - 1]) < 0; ) r++;
            Mn(t, e, r);
        } else for (;n > r && i(t[r], t[r - 1]) >= 0; ) r++;
        return r - e;
    }
    function Mn(t, e, n) {
        for (n--; n > e; ) {
            var i = t[e];
            t[e++] = t[n], t[n--] = i;
        }
    }
    function Tn(t, e, n, i, r) {
        for (i === e && i++; n > i; i++) {
            for (var a, o = t[i], s = e, l = i; l > s; ) a = s + l >>> 1, r(o, t[a]) < 0 ? l = a : s = a + 1;
            var u = i - s;
            switch (u) {
              case 3:
                t[s + 3] = t[s + 2];

              case 2:
                t[s + 2] = t[s + 1];

              case 1:
                t[s + 1] = t[s];
                break;

              default:
                for (;u > 0; ) t[s + u] = t[s + u - 1], u--;
            }
            t[s] = o;
        }
    }
    function Cn(t, e, n, i, r, a) {
        var o = 0, s = 0, l = 1;
        if (a(t, e[n + r]) > 0) {
            for (s = i - r; s > l && a(t, e[n + r + l]) > 0; ) o = l, l = (l << 1) + 1, 0 >= l && (l = s);
            l > s && (l = s), o += r, l += r;
        } else {
            for (s = r + 1; s > l && a(t, e[n + r - l]) <= 0; ) o = l, l = (l << 1) + 1, 0 >= l && (l = s);
            l > s && (l = s);
            var u = o;
            o = r - l, l = r - u;
        }
        for (o++; l > o; ) {
            var h = o + (l - o >>> 1);
            a(t, e[n + h]) > 0 ? o = h + 1 : l = h;
        }
        return l;
    }
    function kn(t, e, n, i, r, a) {
        var o = 0, s = 0, l = 1;
        if (a(t, e[n + r]) < 0) {
            for (s = r + 1; s > l && a(t, e[n + r - l]) < 0; ) o = l, l = (l << 1) + 1, 0 >= l && (l = s);
            l > s && (l = s);
            var u = o;
            o = r - l, l = r - u;
        } else {
            for (s = i - r; s > l && a(t, e[n + r + l]) >= 0; ) o = l, l = (l << 1) + 1, 0 >= l && (l = s);
            l > s && (l = s), o += r, l += r;
        }
        for (o++; l > o; ) {
            var h = o + (l - o >>> 1);
            a(t, e[n + h]) < 0 ? l = h : o = h + 1;
        }
        return l;
    }
    function In(t, e) {
        function n(t, e) {
            l[c] = t, u[c] = e, c += 1;
        }
        function i() {
            for (;c > 1; ) {
                var t = c - 2;
                if (t >= 1 && u[t - 1] <= u[t] + u[t + 1] || t >= 2 && u[t - 2] <= u[t] + u[t - 1]) u[t - 1] < u[t + 1] && t--; else if (u[t] > u[t + 1]) break;
                a(t);
            }
        }
        function r() {
            for (;c > 1; ) {
                var t = c - 2;
                t > 0 && u[t - 1] < u[t + 1] && t--, a(t);
            }
        }
        function a(n) {
            var i = l[n], r = u[n], a = l[n + 1], h = u[n + 1];
            u[n] = r + h, n === c - 3 && (l[n + 1] = l[n + 2], u[n + 1] = u[n + 2]), c--;
            var f = kn(t[a], t, i, r, 0, e);
            i += f, r -= f, 0 !== r && (h = Cn(t[i + r - 1], t, a, h, h - 1, e), 0 !== h && (h >= r ? o(i, r, a, h) : s(i, r, a, h)));
        }
        function o(n, i, r, a) {
            var o = 0;
            for (o = 0; i > o; o++) f[o] = t[n + o];
            var s = 0, l = r, u = n;
            if (t[u++] = t[l++], 0 !== --a) {
                if (1 === i) {
                    for (o = 0; a > o; o++) t[u + o] = t[l + o];
                    return void (t[u + a] = f[s]);
                }
                for (var c, d, p, g = h; ;) {
                    c = 0, d = 0, p = !1;
                    do {
                        if (e(t[l], f[s]) < 0) {
                            if (t[u++] = t[l++], d++, c = 0, 0 === --a) {
                                p = !0;
                                break;
                            }
                        } else if (t[u++] = f[s++], c++, d = 0, 1 === --i) {
                            p = !0;
                            break;
                        }
                    } while (g > (c | d));
                    if (p) break;
                    do {
                        if (c = kn(t[l], f, s, i, 0, e), 0 !== c) {
                            for (o = 0; c > o; o++) t[u + o] = f[s + o];
                            if (u += c, s += c, i -= c, 1 >= i) {
                                p = !0;
                                break;
                            }
                        }
                        if (t[u++] = t[l++], 0 === --a) {
                            p = !0;
                            break;
                        }
                        if (d = Cn(f[s], t, l, a, 0, e), 0 !== d) {
                            for (o = 0; d > o; o++) t[u + o] = t[l + o];
                            if (u += d, l += d, a -= d, 0 === a) {
                                p = !0;
                                break;
                            }
                        }
                        if (t[u++] = f[s++], 1 === --i) {
                            p = !0;
                            break;
                        }
                        g--;
                    } while (c >= pd || d >= pd);
                    if (p) break;
                    0 > g && (g = 0), g += 2;
                }
                if (h = g, 1 > h && (h = 1), 1 === i) {
                    for (o = 0; a > o; o++) t[u + o] = t[l + o];
                    t[u + a] = f[s];
                } else {
                    if (0 === i) throw new Error();
                    for (o = 0; i > o; o++) t[u + o] = f[s + o];
                }
            } else for (o = 0; i > o; o++) t[u + o] = f[s + o];
        }
        function s(n, i, r, a) {
            var o = 0;
            for (o = 0; a > o; o++) f[o] = t[r + o];
            var s = n + i - 1, l = a - 1, u = r + a - 1, c = 0, d = 0;
            if (t[u--] = t[s--], 0 !== --i) {
                if (1 === a) {
                    for (u -= i, s -= i, d = u + 1, c = s + 1, o = i - 1; o >= 0; o--) t[d + o] = t[c + o];
                    return void (t[u] = f[l]);
                }
                for (var p = h; ;) {
                    var g = 0, v = 0, m = !1;
                    do {
                        if (e(f[l], t[s]) < 0) {
                            if (t[u--] = t[s--], g++, v = 0, 0 === --i) {
                                m = !0;
                                break;
                            }
                        } else if (t[u--] = f[l--], v++, g = 0, 1 === --a) {
                            m = !0;
                            break;
                        }
                    } while (p > (g | v));
                    if (m) break;
                    do {
                        if (g = i - kn(f[l], t, n, i, i - 1, e), 0 !== g) {
                            for (u -= g, s -= g, i -= g, d = u + 1, c = s + 1, o = g - 1; o >= 0; o--) t[d + o] = t[c + o];
                            if (0 === i) {
                                m = !0;
                                break;
                            }
                        }
                        if (t[u--] = f[l--], 1 === --a) {
                            m = !0;
                            break;
                        }
                        if (v = a - Cn(t[s], f, 0, a, a - 1, e), 0 !== v) {
                            for (u -= v, l -= v, a -= v, d = u + 1, c = l + 1, o = 0; v > o; o++) t[d + o] = f[c + o];
                            if (1 >= a) {
                                m = !0;
                                break;
                            }
                        }
                        if (t[u--] = t[s--], 0 === --i) {
                            m = !0;
                            break;
                        }
                        p--;
                    } while (g >= pd || v >= pd);
                    if (m) break;
                    0 > p && (p = 0), p += 2;
                }
                if (h = p, 1 > h && (h = 1), 1 === a) {
                    for (u -= i, s -= i, d = u + 1, c = s + 1, o = i - 1; o >= 0; o--) t[d + o] = t[c + o];
                    t[u] = f[l];
                } else {
                    if (0 === a) throw new Error();
                    for (c = u - (a - 1), o = 0; a > o; o++) t[c + o] = f[o];
                }
            } else for (c = u - (a - 1), o = 0; a > o; o++) t[c + o] = f[o];
        }
        var l, u, h = pd, c = 0, f = [];
        l = [], u = [], this.mergeRuns = i, this.forceMergeRuns = r, this.pushRun = n;
    }
    function Dn(t, e, n, i) {
        n || (n = 0), i || (i = t.length);
        var r = i - n;
        if (!(2 > r)) {
            var a = 0;
            if (dd > r) return a = Sn(t, n, i, e), void Tn(t, n, i, n + a, e);
            var o = new In(t, e), s = bn(r);
            do {
                if (a = Sn(t, n, i, e), s > a) {
                    var l = r;
                    l > s && (l = s), Tn(t, n, n + l, n + a, e), a = l;
                }
                o.pushRun(n, a), o.mergeRuns(), r -= a, n += a;
            } while (0 !== r);
            o.forceMergeRuns();
        }
    }
    function An(t, e) {
        return t.zlevel === e.zlevel ? t.z === e.z ? t.z2 - e.z2 : t.z - e.z : t.zlevel - e.zlevel;
    }
    function Pn(t, e, n) {
        var i = null == e.x ? 0 : e.x, r = null == e.x2 ? 1 : e.x2, a = null == e.y ? 0 : e.y, o = null == e.y2 ? 0 : e.y2;
        e.global || (i = i * n.width + n.x, r = r * n.width + n.x, a = a * n.height + n.y, 
        o = o * n.height + n.y), i = isNaN(i) ? 0 : i, r = isNaN(r) ? 1 : r, a = isNaN(a) ? 0 : a, 
        o = isNaN(o) ? 0 : o;
        var s = t.createLinearGradient(i, a, r, o);
        return s;
    }
    function On(t, e, n) {
        var i = n.width, r = n.height, a = Math.min(i, r), o = null == e.x ? .5 : e.x, s = null == e.y ? .5 : e.y, l = null == e.r ? .5 : e.r;
        e.global || (o = o * i + n.x, s = s * r + n.y, l *= a);
        var u = t.createRadialGradient(o, s, 0, o, s, l);
        return u;
    }
    function Ln() {
        return !1;
    }
    function En(t, e, n) {
        var i = hf(), r = e.getWidth(), a = e.getHeight(), o = i.style;
        return o && (o.position = "absolute", o.left = 0, o.top = 0, o.width = r + "px", 
        o.height = a + "px", i.setAttribute("data-zr-dom-id", t)), i.width = r * n, i.height = a * n, 
        i;
    }
    function Bn(t) {
        if ("string" == typeof t) {
            var e = Id.get(t);
            return e && e.image;
        }
        return t;
    }
    function zn(t, e, n, i, r) {
        if (t) {
            if ("string" == typeof t) {
                if (e && e.__zrImageSrc === t || !n) return e;
                var a = Id.get(t), o = {
                    hostEl: n,
                    cb: i,
                    cbPayload: r
                };
                return a ? (e = a.image, !Fn(e) && a.pending.push(o)) : (e = new Image(), e.onload = e.onerror = Rn, 
                Id.put(t, e.__cachedImgObj = {
                    image: e,
                    pending: [ o ]
                }), e.src = e.__zrImageSrc = t), e;
            }
            return t;
        }
        return e;
    }
    function Rn() {
        var t = this.__cachedImgObj;
        this.onload = this.onerror = this.__cachedImgObj = null;
        for (var e = 0; e < t.pending.length; e++) {
            var n = t.pending[e], i = n.cb;
            i && i(this, n.cbPayload), n.hostEl.dirty();
        }
        t.pending.length = 0;
    }
    function Fn(t) {
        return t && t.width && t.height;
    }
    function Nn(t, e) {
        e = e || Ld;
        var n = t + ":" + e;
        if (Dd[n]) return Dd[n];
        for (var i = (t + "").split("\n"), r = 0, a = 0, o = i.length; o > a; a++) r = Math.max(Kn(i[a], e).width, r);
        return Ad > Pd && (Ad = 0, Dd = {}), Ad++, Dd[n] = r, r;
    }
    function Vn(t, e, n, i, r, a, o, s) {
        return o ? Wn(t, e, n, i, r, a, o, s) : Hn(t, e, n, i, r, a, s);
    }
    function Hn(t, e, n, i, r, a, o) {
        var s = Qn(t, e, r, a, o), l = Nn(t, e);
        r && (l += r[1] + r[3]);
        var u = s.outerHeight, h = Gn(0, l, n), c = Xn(0, u, i), f = new wn(h, c, l, u);
        return f.lineHeight = s.lineHeight, f;
    }
    function Wn(t, e, n, i, r, a, o, s) {
        var l = Jn(t, {
            rich: o,
            truncate: s,
            font: e,
            textAlign: n,
            textPadding: r,
            textLineHeight: a
        }), u = l.outerWidth, h = l.outerHeight, c = Gn(0, u, n), f = Xn(0, h, i);
        return new wn(c, f, u, h);
    }
    function Gn(t, e, n) {
        return "right" === n ? t -= e : "center" === n && (t -= e / 2), t;
    }
    function Xn(t, e, n) {
        return "middle" === n ? t -= e / 2 : "bottom" === n && (t -= e), t;
    }
    function qn(t, e, n) {
        var i = e.textPosition, r = e.textDistance, a = n.x, o = n.y, s = n.height, l = n.width, u = s / 2, h = "left", c = "top";
        switch (i) {
          case "left":
            a -= r, o += u, h = "right", c = "middle";
            break;

          case "right":
            a += r + l, o += u, c = "middle";
            break;

          case "top":
            a += l / 2, o -= r, h = "center", c = "bottom";
            break;

          case "bottom":
            a += l / 2, o += s + r, h = "center";
            break;

          case "inside":
            a += l / 2, o += u, h = "center", c = "middle";
            break;

          case "insideLeft":
            a += r, o += u, c = "middle";
            break;

          case "insideRight":
            a += l - r, o += u, h = "right", c = "middle";
            break;

          case "insideTop":
            a += l / 2, o += r, h = "center";
            break;

          case "insideBottom":
            a += l / 2, o += s - r, h = "center", c = "bottom";
            break;

          case "insideTopLeft":
            a += r, o += r;
            break;

          case "insideTopRight":
            a += l - r, o += r, h = "right";
            break;

          case "insideBottomLeft":
            a += r, o += s - r, c = "bottom";
            break;

          case "insideBottomRight":
            a += l - r, o += s - r, h = "right", c = "bottom";
        }
        return t = t || {}, t.x = a, t.y = o, t.textAlign = h, t.textVerticalAlign = c, 
        t;
    }
    function jn(t, e, n, i, r) {
        if (!e) return "";
        var a = (t + "").split("\n");
        r = Un(e, n, i, r);
        for (var o = 0, s = a.length; s > o; o++) a[o] = Yn(a[o], r);
        return a.join("\n");
    }
    function Un(t, e, n, i) {
        i = o({}, i), i.font = e;
        var n = D(n, "...");
        i.maxIterations = D(i.maxIterations, 2);
        var r = i.minChar = D(i.minChar, 0);
        i.cnCharWidth = Nn("国", e);
        var a = i.ascCharWidth = Nn("a", e);
        i.placeholder = D(i.placeholder, "");
        for (var s = t = Math.max(0, t - 1), l = 0; r > l && s >= a; l++) s -= a;
        var u = Nn(n, e);
        return u > s && (n = "", u = 0), s = t - u, i.ellipsis = n, i.ellipsisWidth = u, 
        i.contentWidth = s, i.containerWidth = t, i;
    }
    function Yn(t, e) {
        var n = e.containerWidth, i = e.font, r = e.contentWidth;
        if (!n) return "";
        var a = Nn(t, i);
        if (n >= a) return t;
        for (var o = 0; ;o++) {
            if (r >= a || o >= e.maxIterations) {
                t += e.ellipsis;
                break;
            }
            var s = 0 === o ? Zn(t, r, e.ascCharWidth, e.cnCharWidth) : a > 0 ? Math.floor(t.length * r / a) : 0;
            t = t.substr(0, s), a = Nn(t, i);
        }
        return "" === t && (t = e.placeholder), t;
    }
    function Zn(t, e, n, i) {
        for (var r = 0, a = 0, o = t.length; o > a && e > r; a++) {
            var s = t.charCodeAt(a);
            r += s >= 0 && 127 >= s ? n : i;
        }
        return a;
    }
    function $n(t) {
        return Nn("国", t);
    }
    function Kn(t, e) {
        return Ed.measureText(t, e);
    }
    function Qn(t, e, n, i, r) {
        null != t && (t += "");
        var a = D(i, $n(e)), o = t ? t.split("\n") : [], s = o.length * a, l = s;
        if (n && (l += n[0] + n[2]), t && r) {
            var u = r.outerHeight, h = r.outerWidth;
            if (null != u && l > u) t = "", o = []; else if (null != h) for (var c = Un(h - (n ? n[1] + n[3] : 0), e, r.ellipsis, {
                minChar: r.minChar,
                placeholder: r.placeholder
            }), f = 0, d = o.length; d > f; f++) o[f] = Yn(o[f], c);
        }
        return {
            lines: o,
            height: s,
            outerHeight: l,
            lineHeight: a
        };
    }
    function Jn(t, e) {
        var n = {
            lines: [],
            width: 0,
            height: 0
        };
        if (null != t && (t += ""), !t) return n;
        for (var i, r = Od.lastIndex = 0; null != (i = Od.exec(t)); ) {
            var a = i.index;
            a > r && ti(n, t.substring(r, a)), ti(n, i[2], i[1]), r = Od.lastIndex;
        }
        r < t.length && ti(n, t.substring(r, t.length));
        var o = n.lines, s = 0, l = 0, u = [], h = e.textPadding, c = e.truncate, f = c && c.outerWidth, d = c && c.outerHeight;
        h && (null != f && (f -= h[1] + h[3]), null != d && (d -= h[0] + h[2]));
        for (var p = 0; p < o.length; p++) {
            for (var g = o[p], v = 0, m = 0, y = 0; y < g.tokens.length; y++) {
                var _ = g.tokens[y], x = _.styleName && e.rich[_.styleName] || {}, w = _.textPadding = x.textPadding, b = _.font = x.font || e.font, S = _.textHeight = D(x.textHeight, $n(b));
                if (w && (S += w[0] + w[2]), _.height = S, _.lineHeight = A(x.textLineHeight, e.textLineHeight, S), 
                _.textAlign = x && x.textAlign || e.textAlign, _.textVerticalAlign = x && x.textVerticalAlign || "middle", 
                null != d && s + _.lineHeight > d) return {
                    lines: [],
                    width: 0,
                    height: 0
                };
                _.textWidth = Nn(_.text, b);
                var M = x.textWidth, T = null == M || "auto" === M;
                if ("string" == typeof M && "%" === M.charAt(M.length - 1)) _.percentWidth = M, 
                u.push(_), M = 0; else {
                    if (T) {
                        M = _.textWidth;
                        var C = x.textBackgroundColor, k = C && C.image;
                        k && (k = Bn(k), Fn(k) && (M = Math.max(M, k.width * S / k.height)));
                    }
                    var I = w ? w[1] + w[3] : 0;
                    M += I;
                    var P = null != f ? f - m : null;
                    null != P && M > P && (!T || I > P ? (_.text = "", _.textWidth = M = 0) : (_.text = jn(_.text, P - I, b, c.ellipsis, {
                        minChar: c.minChar
                    }), _.textWidth = Nn(_.text, b), M = _.textWidth + I));
                }
                m += _.width = M, x && (v = Math.max(v, _.lineHeight));
            }
            g.width = m, g.lineHeight = v, s += v, l = Math.max(l, m);
        }
        n.outerWidth = n.width = D(e.textWidth, l), n.outerHeight = n.height = D(e.textHeight, s), 
        h && (n.outerWidth += h[1] + h[3], n.outerHeight += h[0] + h[2]);
        for (var p = 0; p < u.length; p++) {
            var _ = u[p], O = _.percentWidth;
            _.width = parseInt(O, 10) / 100 * l;
        }
        return n;
    }
    function ti(t, e, n) {
        for (var i = "" === e, r = e.split("\n"), a = t.lines, o = 0; o < r.length; o++) {
            var s = r[o], l = {
                styleName: n,
                text: s,
                isLineHolder: !s && !i
            };
            if (o) a.push({
                tokens: [ l ]
            }); else {
                var u = (a[a.length - 1] || (a[0] = {
                    tokens: []
                })).tokens, h = u.length;
                1 === h && u[0].isLineHolder ? u[0] = l : (s || !h || i) && u.push(l);
            }
        }
    }
    function ei(t) {
        var e = (t.fontSize || t.fontFamily) && [ t.fontStyle, t.fontWeight, (t.fontSize || 12) + "px", t.fontFamily || "sans-serif" ].join(" ");
        return e && E(e) || t.textFont || t.font;
    }
    function ni(t, e) {
        var n, i, r, a, o = e.x, s = e.y, l = e.width, u = e.height, h = e.r;
        0 > l && (o += l, l = -l), 0 > u && (s += u, u = -u), "number" == typeof h ? n = i = r = a = h : h instanceof Array ? 1 === h.length ? n = i = r = a = h[0] : 2 === h.length ? (n = r = h[0], 
        i = a = h[1]) : 3 === h.length ? (n = h[0], i = a = h[1], r = h[2]) : (n = h[0], 
        i = h[1], r = h[2], a = h[3]) : n = i = r = a = 0;
        var c;
        n + i > l && (c = n + i, n *= l / c, i *= l / c), r + a > l && (c = r + a, r *= l / c, 
        a *= l / c), i + r > u && (c = i + r, i *= u / c, r *= u / c), n + a > u && (c = n + a, 
        n *= u / c, a *= u / c), t.moveTo(o + n, s), t.lineTo(o + l - i, s), 0 !== i && t.arc(o + l - i, s + i, i, -Math.PI / 2, 0), 
        t.lineTo(o + l, s + u - r), 0 !== r && t.arc(o + l - r, s + u - r, r, 0, Math.PI / 2), 
        t.lineTo(o + a, s + u), 0 !== a && t.arc(o + a, s + u - a, a, Math.PI / 2, Math.PI), 
        t.lineTo(o, s + n), 0 !== n && t.arc(o + n, s + n, n, Math.PI, 1.5 * Math.PI);
    }
    function ii(t) {
        return ri(t), d(t.rich, ri), t;
    }
    function ri(t) {
        if (t) {
            t.font = ei(t);
            var e = t.textAlign;
            "middle" === e && (e = "center"), t.textAlign = null == e || zd[e] ? e : "left";
            var n = t.textVerticalAlign || t.textBaseline;
            "center" === n && (n = "middle"), t.textVerticalAlign = null == n || Rd[n] ? n : "top";
            var i = t.textPadding;
            i && (t.textPadding = O(t.textPadding));
        }
    }
    function ai(t, e, n, i, r, a) {
        i.rich ? si(t, e, n, i, r, a) : oi(t, e, n, i, r, a);
    }
    function oi(t, e, n, i, r, a) {
        var o, s = ci(i), l = !1, u = e.__attrCachedBy === yd.PLAIN_TEXT;
        a !== _d ? (a && (o = a.style, l = !s && u && o), e.__attrCachedBy = s ? yd.NONE : yd.PLAIN_TEXT) : u && (e.__attrCachedBy = yd.NONE);
        var h = i.font || Bd;
        l && h === (o.font || Bd) || (e.font = h);
        var c = t.__computedFont;
        t.__styleFont !== h && (t.__styleFont = h, c = t.__computedFont = e.font);
        var f = i.textPadding, d = i.textLineHeight, p = t.__textCotentBlock;
        (!p || t.__dirtyText) && (p = t.__textCotentBlock = Qn(n, c, f, d, i.truncate));
        var g = p.outerHeight, v = p.lines, m = p.lineHeight, y = pi(Vd, t, i, r), _ = y.baseX, x = y.baseY, w = y.textAlign || "left", b = y.textVerticalAlign;
        ui(e, i, r, _, x);
        var S = Xn(x, g, b), M = _, T = S;
        if (s || f) {
            var C = Nn(n, c), k = C;
            f && (k += f[1] + f[3]);
            var I = Gn(_, k, w);
            s && fi(t, e, i, I, S, k, g), f && (M = _i(_, w, f), T += f[0]);
        }
        e.textAlign = w, e.textBaseline = "middle", e.globalAlpha = i.opacity || 1;
        for (var D = 0; D < Fd.length; D++) {
            var A = Fd[D], P = A[0], O = A[1], L = i[P];
            l && L === o[P] || (e[O] = md(e, O, L || A[2]));
        }
        T += m / 2;
        var E = i.textStrokeWidth, B = l ? o.textStrokeWidth : null, z = !l || E !== B, R = !l || z || i.textStroke !== o.textStroke, F = vi(i.textStroke, E), N = mi(i.textFill);
        if (F && (z && (e.lineWidth = E), R && (e.strokeStyle = F)), N && (l && i.textFill === o.textFill || (e.fillStyle = N)), 
        1 === v.length) F && e.strokeText(v[0], M, T), N && e.fillText(v[0], M, T); else for (var D = 0; D < v.length; D++) F && e.strokeText(v[D], M, T), 
        N && e.fillText(v[D], M, T), T += m;
    }
    function si(t, e, n, i, r, a) {
        a !== _d && (e.__attrCachedBy = yd.NONE);
        var o = t.__textCotentBlock;
        (!o || t.__dirtyText) && (o = t.__textCotentBlock = Jn(n, i)), li(t, e, o, i, r);
    }
    function li(t, e, n, i, r) {
        var a = n.width, o = n.outerWidth, s = n.outerHeight, l = i.textPadding, u = pi(Vd, t, i, r), h = u.baseX, c = u.baseY, f = u.textAlign, d = u.textVerticalAlign;
        ui(e, i, r, h, c);
        var p = Gn(h, o, f), g = Xn(c, s, d), v = p, m = g;
        l && (v += l[3], m += l[0]);
        var y = v + a;
        ci(i) && fi(t, e, i, p, g, o, s);
        for (var _ = 0; _ < n.lines.length; _++) {
            for (var x, w = n.lines[_], b = w.tokens, S = b.length, M = w.lineHeight, T = w.width, C = 0, k = v, I = y, D = S - 1; S > C && (x = b[C], 
            !x.textAlign || "left" === x.textAlign); ) hi(t, e, x, i, M, m, k, "left"), T -= x.width, 
            k += x.width, C++;
            for (;D >= 0 && (x = b[D], "right" === x.textAlign); ) hi(t, e, x, i, M, m, I, "right"), 
            T -= x.width, I -= x.width, D--;
            for (k += (a - (k - v) - (y - I) - T) / 2; D >= C; ) x = b[C], hi(t, e, x, i, M, m, k + x.width / 2, "center"), 
            k += x.width, C++;
            m += M;
        }
    }
    function ui(t, e, n, i, r) {
        if (n && e.textRotation) {
            var a = e.textOrigin;
            "center" === a ? (i = n.width / 2 + n.x, r = n.height / 2 + n.y) : a && (i = a[0] + n.x, 
            r = a[1] + n.y), t.translate(i, r), t.rotate(-e.textRotation), t.translate(-i, -r);
        }
    }
    function hi(t, e, n, i, r, a, o, s) {
        var l = i.rich[n.styleName] || {};
        l.text = n.text;
        var u = n.textVerticalAlign, h = a + r / 2;
        "top" === u ? h = a + n.height / 2 : "bottom" === u && (h = a + r - n.height / 2), 
        !n.isLineHolder && ci(l) && fi(t, e, l, "right" === s ? o - n.width : "center" === s ? o - n.width / 2 : o, h - n.height / 2, n.width, n.height);
        var c = n.textPadding;
        c && (o = _i(o, s, c), h -= n.height / 2 - c[2] - n.textHeight / 2), gi(e, "shadowBlur", A(l.textShadowBlur, i.textShadowBlur, 0)), 
        gi(e, "shadowColor", l.textShadowColor || i.textShadowColor || "transparent"), gi(e, "shadowOffsetX", A(l.textShadowOffsetX, i.textShadowOffsetX, 0)), 
        gi(e, "shadowOffsetY", A(l.textShadowOffsetY, i.textShadowOffsetY, 0)), gi(e, "textAlign", s), 
        gi(e, "textBaseline", "middle"), gi(e, "font", n.font || Bd);
        var f = vi(l.textStroke || i.textStroke, p), d = mi(l.textFill || i.textFill), p = D(l.textStrokeWidth, i.textStrokeWidth);
        f && (gi(e, "lineWidth", p), gi(e, "strokeStyle", f), e.strokeText(n.text, o, h)), 
        d && (gi(e, "fillStyle", d), e.fillText(n.text, o, h));
    }
    function ci(t) {
        return !!(t.textBackgroundColor || t.textBorderWidth && t.textBorderColor);
    }
    function fi(t, e, n, i, r, a, o) {
        var s = n.textBackgroundColor, l = n.textBorderWidth, u = n.textBorderColor, h = b(s);
        if (gi(e, "shadowBlur", n.textBoxShadowBlur || 0), gi(e, "shadowColor", n.textBoxShadowColor || "transparent"), 
        gi(e, "shadowOffsetX", n.textBoxShadowOffsetX || 0), gi(e, "shadowOffsetY", n.textBoxShadowOffsetY || 0), 
        h || l && u) {
            e.beginPath();
            var c = n.textBorderRadius;
            c ? ni(e, {
                x: i,
                y: r,
                width: a,
                height: o,
                r: c
            }) : e.rect(i, r, a, o), e.closePath();
        }
        if (h) if (gi(e, "fillStyle", s), null != n.fillOpacity) {
            var f = e.globalAlpha;
            e.globalAlpha = n.fillOpacity * n.opacity, e.fill(), e.globalAlpha = f;
        } else e.fill(); else if (S(s)) {
            var d = s.image;
            d = zn(d, null, t, di, s), d && Fn(d) && e.drawImage(d, i, r, a, o);
        }
        if (l && u) if (gi(e, "lineWidth", l), gi(e, "strokeStyle", u), null != n.strokeOpacity) {
            var f = e.globalAlpha;
            e.globalAlpha = n.strokeOpacity * n.opacity, e.stroke(), e.globalAlpha = f;
        } else e.stroke();
    }
    function di(t, e) {
        e.image = t;
    }
    function pi(t, e, n, i) {
        var r = n.x || 0, a = n.y || 0, o = n.textAlign, s = n.textVerticalAlign;
        if (i) {
            var l = n.textPosition;
            if (l instanceof Array) r = i.x + yi(l[0], i.width), a = i.y + yi(l[1], i.height); else {
                var u = e && e.calculateTextPosition ? e.calculateTextPosition(Nd, n, i) : qn(Nd, n, i);
                r = u.x, a = u.y, o = o || u.textAlign, s = s || u.textVerticalAlign;
            }
            var h = n.textOffset;
            h && (r += h[0], a += h[1]);
        }
        return t = t || {}, t.baseX = r, t.baseY = a, t.textAlign = o, t.textVerticalAlign = s, 
        t;
    }
    function gi(t, e, n) {
        return t[e] = md(t, e, n), t[e];
    }
    function vi(t, e) {
        return null == t || 0 >= e || "transparent" === t || "none" === t ? null : t.image || t.colorStops ? "#000" : t;
    }
    function mi(t) {
        return null == t || "none" === t ? null : t.image || t.colorStops ? "#000" : t;
    }
    function yi(t, e) {
        return "string" == typeof t ? t.lastIndexOf("%") >= 0 ? parseFloat(t) / 100 * e : parseFloat(t) : t;
    }
    function _i(t, e, n) {
        return "right" === e ? t - n[1] : "center" === e ? t + n[3] / 2 - n[1] / 2 : t + n[3];
    }
    function xi(t, e) {
        return null != t && (t || e.textBackgroundColor || e.textBorderWidth && e.textBorderColor || e.textPadding);
    }
    function wi(t) {
        t = t || {}, ld.call(this, t);
        for (var e in t) t.hasOwnProperty(e) && "style" !== e && (this[e] = t[e]);
        this.style = new wd(t.style, this), this._rect = null, this.__clipPaths = null;
    }
    function bi(t) {
        wi.call(this, t);
    }
    function Si(t) {
        return parseInt(t, 10);
    }
    function Mi(t) {
        return t ? t.__builtin__ ? !0 : "function" != typeof t.resize || "function" != typeof t.refresh ? !1 : !0 : !1;
    }
    function Ti(t, e, n) {
        return Ud.copy(t.getBoundingRect()), t.transform && Ud.applyTransform(t.transform), 
        Yd.width = e, Yd.height = n, !Ud.intersect(Yd);
    }
    function Ci(t, e) {
        if (t === e) return !1;
        if (!t || !e || t.length !== e.length) return !0;
        for (var n = 0; n < t.length; n++) if (t[n] !== e[n]) return !0;
        return !1;
    }
    function ki(t, e) {
        for (var n = 0; n < t.length; n++) {
            var i = t[n];
            i.setTransform(e), e.beginPath(), i.buildPath(e, i.shape), e.clip(), i.restoreTransform(e);
        }
    }
    function Ii(t, e) {
        var n = document.createElement("div");
        return n.style.cssText = [ "position:relative", "overflow:hidden", "width:" + t + "px", "height:" + e + "px", "padding:0", "margin:0", "border-width:0" ].join(";") + ";", 
        n;
    }
    function Di(t) {
        return "mousewheel" === t && Qc.browser.firefox ? "DOMMouseScroll" : t;
    }
    function Ai(t) {
        t._touching = !0, clearTimeout(t._touchTimer), t._touchTimer = setTimeout(function() {
            t._touching = !1;
        }, 700);
    }
    function Pi(t) {
        var e = t.pointerType;
        return "pen" === e || "touch" === e;
    }
    function Oi(t) {
        function e(t, e) {
            return function() {
                return e._touching ? void 0 : t.apply(e, arguments);
            };
        }
        d(Jd, function(e) {
            t._handlers[e] = y(np[e], t);
        }), d(ep, function(e) {
            t._handlers[e] = y(np[e], t);
        }), d(Qd, function(n) {
            t._handlers[n] = e(np[n], t);
        });
    }
    function Li(t) {
        function e(e, n) {
            d(e, function(e) {
                _e(t, Di(e), n._handlers[e]);
            }, n);
        }
        wf.call(this), this.dom = t, this._touching = !1, this._touchTimer, this._handlers = {}, 
        Oi(this), Qc.pointerEventsSupported ? e(ep, this) : (Qc.touchEventsSupported && e(Jd, this), 
        e(Qd, this));
    }
    function Ei(t, e) {
        var n = new lp($c(), t, e);
        return op[n.id] = n, n;
    }
    function Bi(t) {
        if (t) t.dispose(); else {
            for (var e in op) op.hasOwnProperty(e) && op[e].dispose();
            op = {};
        }
        return this;
    }
    function zi(t) {
        return op[t];
    }
    function Ri(t, e) {
        ap[t] = e;
    }
    function Fi(t) {
        delete op[t];
    }
    function Ni(t) {
        return t instanceof Array ? t : null == t ? [] : [ t ];
    }
    function Vi(t, e, n) {
        if (t) {
            t[e] = t[e] || {}, t.emphasis = t.emphasis || {}, t.emphasis[e] = t.emphasis[e] || {};
            for (var i = 0, r = n.length; r > i; i++) {
                var a = n[i];
                !t.emphasis[e].hasOwnProperty(a) && t[e].hasOwnProperty(a) && (t.emphasis[e][a] = t[e][a]);
            }
        }
    }
    function Hi(t) {
        return !cp(t) || fp(t) || t instanceof Date ? t : t.value;
    }
    function Wi(t) {
        return cp(t) && !(t instanceof Array);
    }
    function Gi(t, e) {
        e = (e || []).slice();
        var n = p(t || [], function(t) {
            return {
                exist: t
            };
        });
        return hp(e, function(t, i) {
            if (cp(t)) {
                for (var r = 0; r < n.length; r++) if (!n[r].option && null != t.id && n[r].exist.id === t.id + "") return n[r].option = t, 
                void (e[i] = null);
                for (var r = 0; r < n.length; r++) {
                    var a = n[r].exist;
                    if (!(n[r].option || null != a.id && null != t.id || null == t.name || ji(t) || ji(a) || a.name !== t.name + "")) return n[r].option = t, 
                    void (e[i] = null);
                }
            }
        }), hp(e, function(t) {
            if (cp(t)) {
                for (var e = 0; e < n.length; e++) {
                    var i = n[e].exist;
                    if (!n[e].option && !ji(i) && null == t.id) {
                        n[e].option = t;
                        break;
                    }
                }
                e >= n.length && n.push({
                    option: t
                });
            }
        }), n;
    }
    function Xi(t) {
        var e = F();
        hp(t, function(t) {
            var n = t.exist;
            n && e.set(n.id, t);
        }), hp(t, function(t) {
            var n = t.option;
            L(!n || null == n.id || !e.get(n.id) || e.get(n.id) === t, "id duplicates: " + (n && n.id)), 
            n && null != n.id && e.set(n.id, t), !t.keyInfo && (t.keyInfo = {});
        }), hp(t, function(t, n) {
            var i = t.exist, r = t.option, a = t.keyInfo;
            if (cp(r)) {
                if (a.name = null != r.name ? r.name + "" : i ? i.name : dp + n, i) a.id = i.id; else if (null != r.id) a.id = r.id + ""; else {
                    var o = 0;
                    do {
                        a.id = "\0" + a.name + "\0" + o++;
                    } while (e.get(a.id));
                }
                e.set(a.id, t);
            }
        });
    }
    function qi(t) {
        var e = t.name;
        return !(!e || !e.indexOf(dp));
    }
    function ji(t) {
        return cp(t) && t.id && 0 === (t.id + "").indexOf("\0_ec_\0");
    }
    function Ui(t, e) {
        return null != e.dataIndexInside ? e.dataIndexInside : null != e.dataIndex ? x(e.dataIndex) ? p(e.dataIndex, function(e) {
            return t.indexOfRawIndex(e);
        }) : t.indexOfRawIndex(e.dataIndex) : null != e.name ? x(e.name) ? p(e.name, function(e) {
            return t.indexOfName(e);
        }) : t.indexOfName(e.name) : void 0;
    }
    function Yi() {
        var t = "__\0ec_inner_" + gp++ + "_" + Math.random().toFixed(5);
        return function(e) {
            return e[t] || (e[t] = {});
        };
    }
    function Zi(t, e, n) {
        if (b(e)) {
            var i = {};
            i[e + "Index"] = 0, e = i;
        }
        var r = n && n.defaultMainType;
        !r || $i(e, r + "Index") || $i(e, r + "Id") || $i(e, r + "Name") || (e[r + "Index"] = 0);
        var a = {};
        return hp(e, function(i, r) {
            var i = e[r];
            if ("dataIndex" === r || "dataIndexInside" === r) return void (a[r] = i);
            var o = r.match(/^(\w+)(Index|Id|Name)$/) || [], s = o[1], l = (o[2] || "").toLowerCase();
            if (!(!s || !l || null == i || "index" === l && "none" === i || n && n.includeMainTypes && u(n.includeMainTypes, s) < 0)) {
                var h = {
                    mainType: s
                };
                ("index" !== l || "all" !== i) && (h[l] = i);
                var c = t.queryComponents(h);
                a[s + "Models"] = c, a[s + "Model"] = c[0];
            }
        }), a;
    }
    function $i(t, e) {
        return t && t.hasOwnProperty(e);
    }
    function Ki(t, e, n) {
        t.setAttribute ? t.setAttribute(e, n) : t[e] = n;
    }
    function Qi(t, e) {
        return t.getAttribute ? t.getAttribute(e) : t[e];
    }
    function Ji(t) {
        return "auto" === t ? Qc.domSupported ? "html" : "richText" : t || "html";
    }
    function tr(t) {
        var e = {
            main: "",
            sub: ""
        };
        return t && (t = t.split(vp), e.main = t[0] || "", e.sub = t[1] || ""), e;
    }
    function er(t) {
        L(/^[a-zA-Z0-9_]+([.][a-zA-Z0-9_]+)?$/.test(t), 'componentType "' + t + '" illegal');
    }
    function nr(t) {
        t.$constructor = t, t.extend = function(t) {
            var e = this, n = function() {
                t.$constructor ? t.$constructor.apply(this, arguments) : e.apply(this, arguments);
            };
            return o(n.prototype, t), n.extend = this.extend, n.superCall = rr, n.superApply = ar, 
            h(n, this), n.superClass = e, n;
        };
    }
    function ir(t) {
        var e = [ "__\0is_clz", yp++, Math.random().toFixed(3) ].join("_");
        t.prototype[e] = !0, t.isInstance = function(t) {
            return !(!t || !t[e]);
        };
    }
    function rr(t, e) {
        var n = P(arguments, 2);
        return this.superClass.prototype[e].apply(t, n);
    }
    function ar(t, e, n) {
        return this.superClass.prototype[e].apply(t, n);
    }
    function or(t, e) {
        function n(t) {
            var e = i[t.main];
            return e && e[mp] || (e = i[t.main] = {}, e[mp] = !0), e;
        }
        e = e || {};
        var i = {};
        if (t.registerClass = function(t, e) {
            if (e) if (er(e), e = tr(e), e.sub) {
                if (e.sub !== mp) {
                    var r = n(e);
                    r[e.sub] = t;
                }
            } else i[e.main] = t;
            return t;
        }, t.getClass = function(t, e, n) {
            var r = i[t];
            if (r && r[mp] && (r = e ? r[e] : null), n && !r) throw new Error(e ? "Component " + t + "." + (e || "") + " not exists. Load it first." : t + ".type should be specified.");
            return r;
        }, t.getClassesByMainType = function(t) {
            t = tr(t);
            var e = [], n = i[t.main];
            return n && n[mp] ? d(n, function(t, n) {
                n !== mp && e.push(t);
            }) : e.push(n), e;
        }, t.hasClass = function(t) {
            return t = tr(t), !!i[t.main];
        }, t.getAllClassMainTypes = function() {
            var t = [];
            return d(i, function(e, n) {
                t.push(n);
            }), t;
        }, t.hasSubTypes = function(t) {
            t = tr(t);
            var e = i[t.main];
            return e && e[mp];
        }, t.parseClassType = tr, e.registerWhenExtend) {
            var r = t.extend;
            r && (t.extend = function(e) {
                var n = r.call(this, e);
                return t.registerClass(n, e.type);
            });
        }
        return t;
    }
    function sr(t) {
        return t > -Cp && Cp > t;
    }
    function lr(t) {
        return t > Cp || -Cp > t;
    }
    function ur(t, e, n, i, r) {
        var a = 1 - r;
        return a * a * (a * t + 3 * r * e) + r * r * (r * i + 3 * a * n);
    }
    function hr(t, e, n, i, r) {
        var a = 1 - r;
        return 3 * (((e - t) * a + 2 * (n - e) * r) * a + (i - n) * r * r);
    }
    function cr(t, e, n, i, r, a) {
        var o = i + 3 * (e - n) - t, s = 3 * (n - 2 * e + t), l = 3 * (e - t), u = t - r, h = s * s - 3 * o * l, c = s * l - 9 * o * u, f = l * l - 3 * s * u, d = 0;
        if (sr(h) && sr(c)) if (sr(s)) a[0] = 0; else {
            var p = -l / s;
            p >= 0 && 1 >= p && (a[d++] = p);
        } else {
            var g = c * c - 4 * h * f;
            if (sr(g)) {
                var v = c / h, p = -s / o + v, m = -v / 2;
                p >= 0 && 1 >= p && (a[d++] = p), m >= 0 && 1 >= m && (a[d++] = m);
            } else if (g > 0) {
                var y = Tp(g), _ = h * s + 1.5 * o * (-c + y), x = h * s + 1.5 * o * (-c - y);
                _ = 0 > _ ? -Mp(-_, Dp) : Mp(_, Dp), x = 0 > x ? -Mp(-x, Dp) : Mp(x, Dp);
                var p = (-s - (_ + x)) / (3 * o);
                p >= 0 && 1 >= p && (a[d++] = p);
            } else {
                var w = (2 * h * s - 3 * o * c) / (2 * Tp(h * h * h)), b = Math.acos(w) / 3, S = Tp(h), M = Math.cos(b), p = (-s - 2 * S * M) / (3 * o), m = (-s + S * (M + Ip * Math.sin(b))) / (3 * o), T = (-s + S * (M - Ip * Math.sin(b))) / (3 * o);
                p >= 0 && 1 >= p && (a[d++] = p), m >= 0 && 1 >= m && (a[d++] = m), T >= 0 && 1 >= T && (a[d++] = T);
            }
        }
        return d;
    }
    function fr(t, e, n, i, r) {
        var a = 6 * n - 12 * e + 6 * t, o = 9 * e + 3 * i - 3 * t - 9 * n, s = 3 * e - 3 * t, l = 0;
        if (sr(o)) {
            if (lr(a)) {
                var u = -s / a;
                u >= 0 && 1 >= u && (r[l++] = u);
            }
        } else {
            var h = a * a - 4 * o * s;
            if (sr(h)) r[0] = -a / (2 * o); else if (h > 0) {
                var c = Tp(h), u = (-a + c) / (2 * o), f = (-a - c) / (2 * o);
                u >= 0 && 1 >= u && (r[l++] = u), f >= 0 && 1 >= f && (r[l++] = f);
            }
        }
        return l;
    }
    function dr(t, e, n, i, r, a) {
        var o = (e - t) * r + t, s = (n - e) * r + e, l = (i - n) * r + n, u = (s - o) * r + o, h = (l - s) * r + s, c = (h - u) * r + u;
        a[0] = t, a[1] = o, a[2] = u, a[3] = c, a[4] = c, a[5] = h, a[6] = l, a[7] = i;
    }
    function pr(t, e, n, i, r, a, o, s, l, u, h) {
        var c, f, d, p, g, v = .005, m = 1 / 0;
        Ap[0] = l, Ap[1] = u;
        for (var y = 0; 1 > y; y += .05) Pp[0] = ur(t, n, r, o, y), Pp[1] = ur(e, i, a, s, y), 
        p = yf(Ap, Pp), m > p && (c = y, m = p);
        m = 1 / 0;
        for (var _ = 0; 32 > _ && !(kp > v); _++) f = c - v, d = c + v, Pp[0] = ur(t, n, r, o, f), 
        Pp[1] = ur(e, i, a, s, f), p = yf(Pp, Ap), f >= 0 && m > p ? (c = f, m = p) : (Op[0] = ur(t, n, r, o, d), 
        Op[1] = ur(e, i, a, s, d), g = yf(Op, Ap), 1 >= d && m > g ? (c = d, m = g) : v *= .5);
        return h && (h[0] = ur(t, n, r, o, c), h[1] = ur(e, i, a, s, c)), Tp(m);
    }
    function gr(t, e, n, i) {
        var r = 1 - i;
        return r * (r * t + 2 * i * e) + i * i * n;
    }
    function vr(t, e, n, i) {
        return 2 * ((1 - i) * (e - t) + i * (n - e));
    }
    function mr(t, e, n, i, r) {
        var a = t - 2 * e + n, o = 2 * (e - t), s = t - i, l = 0;
        if (sr(a)) {
            if (lr(o)) {
                var u = -s / o;
                u >= 0 && 1 >= u && (r[l++] = u);
            }
        } else {
            var h = o * o - 4 * a * s;
            if (sr(h)) {
                var u = -o / (2 * a);
                u >= 0 && 1 >= u && (r[l++] = u);
            } else if (h > 0) {
                var c = Tp(h), u = (-o + c) / (2 * a), f = (-o - c) / (2 * a);
                u >= 0 && 1 >= u && (r[l++] = u), f >= 0 && 1 >= f && (r[l++] = f);
            }
        }
        return l;
    }
    function yr(t, e, n) {
        var i = t + n - 2 * e;
        return 0 === i ? .5 : (t - e) / i;
    }
    function _r(t, e, n, i, r) {
        var a = (e - t) * i + t, o = (n - e) * i + e, s = (o - a) * i + a;
        r[0] = t, r[1] = a, r[2] = s, r[3] = s, r[4] = o, r[5] = n;
    }
    function xr(t, e, n, i, r, a, o, s, l) {
        var u, h = .005, c = 1 / 0;
        Ap[0] = o, Ap[1] = s;
        for (var f = 0; 1 > f; f += .05) {
            Pp[0] = gr(t, n, r, f), Pp[1] = gr(e, i, a, f);
            var d = yf(Ap, Pp);
            c > d && (u = f, c = d);
        }
        c = 1 / 0;
        for (var p = 0; 32 > p && !(kp > h); p++) {
            var g = u - h, v = u + h;
            Pp[0] = gr(t, n, r, g), Pp[1] = gr(e, i, a, g);
            var d = yf(Pp, Ap);
            if (g >= 0 && c > d) u = g, c = d; else {
                Op[0] = gr(t, n, r, v), Op[1] = gr(e, i, a, v);
                var m = yf(Op, Ap);
                1 >= v && c > m ? (u = v, c = m) : h *= .5;
            }
        }
        return l && (l[0] = gr(t, n, r, u), l[1] = gr(e, i, a, u)), Tp(c);
    }
    function wr(t, e, n) {
        if (0 !== t.length) {
            var i, r = t[0], a = r[0], o = r[0], s = r[1], l = r[1];
            for (i = 1; i < t.length; i++) r = t[i], a = Lp(a, r[0]), o = Ep(o, r[0]), s = Lp(s, r[1]), 
            l = Ep(l, r[1]);
            e[0] = a, e[1] = s, n[0] = o, n[1] = l;
        }
    }
    function br(t, e, n, i, r, a) {
        r[0] = Lp(t, n), r[1] = Lp(e, i), a[0] = Ep(t, n), a[1] = Ep(e, i);
    }
    function Sr(t, e, n, i, r, a, o, s, l, u) {
        var h, c = fr, f = ur, d = c(t, n, r, o, Hp);
        for (l[0] = 1 / 0, l[1] = 1 / 0, u[0] = -1 / 0, u[1] = -1 / 0, h = 0; d > h; h++) {
            var p = f(t, n, r, o, Hp[h]);
            l[0] = Lp(p, l[0]), u[0] = Ep(p, u[0]);
        }
        for (d = c(e, i, a, s, Wp), h = 0; d > h; h++) {
            var g = f(e, i, a, s, Wp[h]);
            l[1] = Lp(g, l[1]), u[1] = Ep(g, u[1]);
        }
        l[0] = Lp(t, l[0]), u[0] = Ep(t, u[0]), l[0] = Lp(o, l[0]), u[0] = Ep(o, u[0]), 
        l[1] = Lp(e, l[1]), u[1] = Ep(e, u[1]), l[1] = Lp(s, l[1]), u[1] = Ep(s, u[1]);
    }
    function Mr(t, e, n, i, r, a, o, s) {
        var l = yr, u = gr, h = Ep(Lp(l(t, n, r), 1), 0), c = Ep(Lp(l(e, i, a), 1), 0), f = u(t, n, r, h), d = u(e, i, a, c);
        o[0] = Lp(t, r, f), o[1] = Lp(e, a, d), s[0] = Ep(t, r, f), s[1] = Ep(e, a, d);
    }
    function Tr(t, e, n, i, r, a, o, s, l) {
        var u = oe, h = se, c = Math.abs(r - a);
        if (1e-4 > c % Rp && c > 1e-4) return s[0] = t - n, s[1] = e - i, l[0] = t + n, 
        void (l[1] = e + i);
        if (Fp[0] = zp(r) * n + t, Fp[1] = Bp(r) * i + e, Np[0] = zp(a) * n + t, Np[1] = Bp(a) * i + e, 
        u(s, Fp, Np), h(l, Fp, Np), r %= Rp, 0 > r && (r += Rp), a %= Rp, 0 > a && (a += Rp), 
        r > a && !o ? a += Rp : a > r && o && (r += Rp), o) {
            var f = a;
            a = r, r = f;
        }
        for (var d = 0; a > d; d += Math.PI / 2) d > r && (Vp[0] = zp(d) * n + t, Vp[1] = Bp(d) * i + e, 
        u(s, Vp, s), h(l, Vp, l));
    }
    function Cr(t, e, n, i, r, a, o) {
        if (0 === r) return !1;
        var s = r, l = 0, u = t;
        if (o > e + s && o > i + s || e - s > o && i - s > o || a > t + s && a > n + s || t - s > a && n - s > a) return !1;
        if (t === n) return Math.abs(a - t) <= s / 2;
        l = (e - i) / (t - n), u = (t * i - n * e) / (t - n);
        var h = l * a - o + u, c = h * h / (l * l + 1);
        return s / 2 * s / 2 >= c;
    }
    function kr(t, e, n, i, r, a, o, s, l, u, h) {
        if (0 === l) return !1;
        var c = l;
        if (h > e + c && h > i + c && h > a + c && h > s + c || e - c > h && i - c > h && a - c > h && s - c > h || u > t + c && u > n + c && u > r + c && u > o + c || t - c > u && n - c > u && r - c > u && o - c > u) return !1;
        var f = pr(t, e, n, i, r, a, o, s, u, h, null);
        return c / 2 >= f;
    }
    function Ir(t, e, n, i, r, a, o, s, l) {
        if (0 === o) return !1;
        var u = o;
        if (l > e + u && l > i + u && l > a + u || e - u > l && i - u > l && a - u > l || s > t + u && s > n + u && s > r + u || t - u > s && n - u > s && r - u > s) return !1;
        var h = xr(t, e, n, i, r, a, s, l, null);
        return u / 2 >= h;
    }
    function Dr(t) {
        return t %= ng, 0 > t && (t += ng), t;
    }
    function Ar(t, e, n, i, r, a, o, s, l) {
        if (0 === o) return !1;
        var u = o;
        s -= t, l -= e;
        var h = Math.sqrt(s * s + l * l);
        if (h - u > n || n > h + u) return !1;
        if (Math.abs(i - r) % ig < 1e-4) return !0;
        if (a) {
            var c = i;
            i = Dr(r), r = Dr(c);
        } else i = Dr(i), r = Dr(r);
        i > r && (r += ig);
        var f = Math.atan2(l, s);
        return 0 > f && (f += ig), f >= i && r >= f || f + ig >= i && r >= f + ig;
    }
    function Pr(t, e, n, i, r, a) {
        if (a > e && a > i || e > a && i > a) return 0;
        if (i === e) return 0;
        var o = e > i ? 1 : -1, s = (a - e) / (i - e);
        (1 === s || 0 === s) && (o = e > i ? .5 : -.5);
        var l = s * (n - t) + t;
        return l === r ? 1 / 0 : l > r ? o : 0;
    }
    function Or(t, e) {
        return Math.abs(t - e) < og;
    }
    function Lr() {
        var t = lg[0];
        lg[0] = lg[1], lg[1] = t;
    }
    function Er(t, e, n, i, r, a, o, s, l, u) {
        if (u > e && u > i && u > a && u > s || e > u && i > u && a > u && s > u) return 0;
        var h = cr(e, i, a, s, u, sg);
        if (0 === h) return 0;
        for (var c, f, d = 0, p = -1, g = 0; h > g; g++) {
            var v = sg[g], m = 0 === v || 1 === v ? .5 : 1, y = ur(t, n, r, o, v);
            l > y || (0 > p && (p = fr(e, i, a, s, lg), lg[1] < lg[0] && p > 1 && Lr(), c = ur(e, i, a, s, lg[0]), 
            p > 1 && (f = ur(e, i, a, s, lg[1]))), d += 2 === p ? v < lg[0] ? e > c ? m : -m : v < lg[1] ? c > f ? m : -m : f > s ? m : -m : v < lg[0] ? e > c ? m : -m : c > s ? m : -m);
        }
        return d;
    }
    function Br(t, e, n, i, r, a, o, s) {
        if (s > e && s > i && s > a || e > s && i > s && a > s) return 0;
        var l = mr(e, i, a, s, sg);
        if (0 === l) return 0;
        var u = yr(e, i, a);
        if (u >= 0 && 1 >= u) {
            for (var h = 0, c = gr(e, i, a, u), f = 0; l > f; f++) {
                var d = 0 === sg[f] || 1 === sg[f] ? .5 : 1, p = gr(t, n, r, sg[f]);
                o > p || (h += sg[f] < u ? e > c ? d : -d : c > a ? d : -d);
            }
            return h;
        }
        var d = 0 === sg[0] || 1 === sg[0] ? .5 : 1, p = gr(t, n, r, sg[0]);
        return o > p ? 0 : e > a ? d : -d;
    }
    function zr(t, e, n, i, r, a, o, s) {
        if (s -= e, s > n || -n > s) return 0;
        var l = Math.sqrt(n * n - s * s);
        sg[0] = -l, sg[1] = l;
        var u = Math.abs(i - r);
        if (1e-4 > u) return 0;
        if (1e-4 > u % ag) {
            i = 0, r = ag;
            var h = a ? 1 : -1;
            return o >= sg[0] + t && o <= sg[1] + t ? h : 0;
        }
        if (a) {
            var l = i;
            i = Dr(r), r = Dr(l);
        } else i = Dr(i), r = Dr(r);
        i > r && (r += ag);
        for (var c = 0, f = 0; 2 > f; f++) {
            var d = sg[f];
            if (d + t > o) {
                var p = Math.atan2(s, d), h = a ? 1 : -1;
                0 > p && (p = ag + p), (p >= i && r >= p || p + ag >= i && r >= p + ag) && (p > Math.PI / 2 && p < 1.5 * Math.PI && (h = -h), 
                c += h);
            }
        }
        return c;
    }
    function Rr(t, e, n, i, r) {
        for (var a = 0, o = 0, s = 0, l = 0, u = 0, h = 0; h < t.length; ) {
            var c = t[h++];
            switch (c === rg.M && h > 1 && (n || (a += Pr(o, s, l, u, i, r))), 1 === h && (o = t[h], 
            s = t[h + 1], l = o, u = s), c) {
              case rg.M:
                l = t[h++], u = t[h++], o = l, s = u;
                break;

              case rg.L:
                if (n) {
                    if (Cr(o, s, t[h], t[h + 1], e, i, r)) return !0;
                } else a += Pr(o, s, t[h], t[h + 1], i, r) || 0;
                o = t[h++], s = t[h++];
                break;

              case rg.C:
                if (n) {
                    if (kr(o, s, t[h++], t[h++], t[h++], t[h++], t[h], t[h + 1], e, i, r)) return !0;
                } else a += Er(o, s, t[h++], t[h++], t[h++], t[h++], t[h], t[h + 1], i, r) || 0;
                o = t[h++], s = t[h++];
                break;

              case rg.Q:
                if (n) {
                    if (Ir(o, s, t[h++], t[h++], t[h], t[h + 1], e, i, r)) return !0;
                } else a += Br(o, s, t[h++], t[h++], t[h], t[h + 1], i, r) || 0;
                o = t[h++], s = t[h++];
                break;

              case rg.A:
                var f = t[h++], d = t[h++], p = t[h++], g = t[h++], v = t[h++], m = t[h++];
                h += 1;
                var y = 1 - t[h++], _ = Math.cos(v) * p + f, x = Math.sin(v) * g + d;
                h > 1 ? a += Pr(o, s, _, x, i, r) : (l = _, u = x);
                var w = (i - f) * g / p + f;
                if (n) {
                    if (Ar(f, d, g, v, v + m, y, e, w, r)) return !0;
                } else a += zr(f, d, g, v, v + m, y, w, r);
                o = Math.cos(v + m) * p + f, s = Math.sin(v + m) * g + d;
                break;

              case rg.R:
                l = o = t[h++], u = s = t[h++];
                var b = t[h++], S = t[h++], _ = l + b, x = u + S;
                if (n) {
                    if (Cr(l, u, _, u, e, i, r) || Cr(_, u, _, x, e, i, r) || Cr(_, x, l, x, e, i, r) || Cr(l, x, l, u, e, i, r)) return !0;
                } else a += Pr(_, u, _, x, i, r), a += Pr(l, x, l, u, i, r);
                break;

              case rg.Z:
                if (n) {
                    if (Cr(o, s, l, u, e, i, r)) return !0;
                } else a += Pr(o, s, l, u, i, r);
                o = l, s = u;
            }
        }
        return n || Or(s, u) || (a += Pr(o, s, l, u, i, r) || 0), 0 !== a;
    }
    function Fr(t, e, n) {
        return Rr(t, 0, !1, e, n);
    }
    function Nr(t, e, n, i) {
        return Rr(t, e, !0, n, i);
    }
    function Vr(t) {
        wi.call(this, t), this.path = null;
    }
    function Hr(t, e, n, i, r, a, o, s, l, u, h) {
        var c = l * (xg / 180), f = _g(c) * (t - n) / 2 + yg(c) * (e - i) / 2, d = -1 * yg(c) * (t - n) / 2 + _g(c) * (e - i) / 2, p = f * f / (o * o) + d * d / (s * s);
        p > 1 && (o *= mg(p), s *= mg(p));
        var g = (r === a ? -1 : 1) * mg((o * o * s * s - o * o * d * d - s * s * f * f) / (o * o * d * d + s * s * f * f)) || 0, v = g * o * d / s, m = g * -s * f / o, y = (t + n) / 2 + _g(c) * v - yg(c) * m, _ = (e + i) / 2 + yg(c) * v + _g(c) * m, x = Sg([ 1, 0 ], [ (f - v) / o, (d - m) / s ]), w = [ (f - v) / o, (d - m) / s ], b = [ (-1 * f - v) / o, (-1 * d - m) / s ], S = Sg(w, b);
        bg(w, b) <= -1 && (S = xg), bg(w, b) >= 1 && (S = 0), 0 === a && S > 0 && (S -= 2 * xg), 
        1 === a && 0 > S && (S += 2 * xg), h.addData(u, y, _, o, s, x, S, c, a);
    }
    function Wr(t) {
        if (!t) return new eg();
        for (var e, n = 0, i = 0, r = n, a = i, o = new eg(), s = eg.CMD, l = t.match(Mg), u = 0; u < l.length; u++) {
            for (var h, c = l[u], f = c.charAt(0), d = c.match(Tg) || [], p = d.length, g = 0; p > g; g++) d[g] = parseFloat(d[g]);
            for (var v = 0; p > v; ) {
                var m, y, _, x, w, b, S, M = n, T = i;
                switch (f) {
                  case "l":
                    n += d[v++], i += d[v++], h = s.L, o.addData(h, n, i);
                    break;

                  case "L":
                    n = d[v++], i = d[v++], h = s.L, o.addData(h, n, i);
                    break;

                  case "m":
                    n += d[v++], i += d[v++], h = s.M, o.addData(h, n, i), r = n, a = i, f = "l";
                    break;

                  case "M":
                    n = d[v++], i = d[v++], h = s.M, o.addData(h, n, i), r = n, a = i, f = "L";
                    break;

                  case "h":
                    n += d[v++], h = s.L, o.addData(h, n, i);
                    break;

                  case "H":
                    n = d[v++], h = s.L, o.addData(h, n, i);
                    break;

                  case "v":
                    i += d[v++], h = s.L, o.addData(h, n, i);
                    break;

                  case "V":
                    i = d[v++], h = s.L, o.addData(h, n, i);
                    break;

                  case "C":
                    h = s.C, o.addData(h, d[v++], d[v++], d[v++], d[v++], d[v++], d[v++]), n = d[v - 2], 
                    i = d[v - 1];
                    break;

                  case "c":
                    h = s.C, o.addData(h, d[v++] + n, d[v++] + i, d[v++] + n, d[v++] + i, d[v++] + n, d[v++] + i), 
                    n += d[v - 2], i += d[v - 1];
                    break;

                  case "S":
                    m = n, y = i;
                    var C = o.len(), k = o.data;
                    e === s.C && (m += n - k[C - 4], y += i - k[C - 3]), h = s.C, M = d[v++], T = d[v++], 
                    n = d[v++], i = d[v++], o.addData(h, m, y, M, T, n, i);
                    break;

                  case "s":
                    m = n, y = i;
                    var C = o.len(), k = o.data;
                    e === s.C && (m += n - k[C - 4], y += i - k[C - 3]), h = s.C, M = n + d[v++], T = i + d[v++], 
                    n += d[v++], i += d[v++], o.addData(h, m, y, M, T, n, i);
                    break;

                  case "Q":
                    M = d[v++], T = d[v++], n = d[v++], i = d[v++], h = s.Q, o.addData(h, M, T, n, i);
                    break;

                  case "q":
                    M = d[v++] + n, T = d[v++] + i, n += d[v++], i += d[v++], h = s.Q, o.addData(h, M, T, n, i);
                    break;

                  case "T":
                    m = n, y = i;
                    var C = o.len(), k = o.data;
                    e === s.Q && (m += n - k[C - 4], y += i - k[C - 3]), n = d[v++], i = d[v++], h = s.Q, 
                    o.addData(h, m, y, n, i);
                    break;

                  case "t":
                    m = n, y = i;
                    var C = o.len(), k = o.data;
                    e === s.Q && (m += n - k[C - 4], y += i - k[C - 3]), n += d[v++], i += d[v++], h = s.Q, 
                    o.addData(h, m, y, n, i);
                    break;

                  case "A":
                    _ = d[v++], x = d[v++], w = d[v++], b = d[v++], S = d[v++], M = n, T = i, n = d[v++], 
                    i = d[v++], h = s.A, Hr(M, T, n, i, b, S, _, x, w, h, o);
                    break;

                  case "a":
                    _ = d[v++], x = d[v++], w = d[v++], b = d[v++], S = d[v++], M = n, T = i, n += d[v++], 
                    i += d[v++], h = s.A, Hr(M, T, n, i, b, S, _, x, w, h, o);
                }
            }
            ("z" === f || "Z" === f) && (h = s.Z, o.addData(h), n = r, i = a), e = h;
        }
        return o.toStatic(), o;
    }
    function Gr(t, e) {
        var n = Wr(t);
        return e = e || {}, e.buildPath = function(t) {
            if (t.setData) {
                t.setData(n.data);
                var e = t.getContext();
                e && t.rebuildPath(e);
            } else {
                var e = t;
                n.rebuildPath(e);
            }
        }, e.applyTransform = function(t) {
            vg(n, t), this.dirty(!0);
        }, e;
    }
    function Xr(t, e) {
        return new Vr(Gr(t, e));
    }
    function qr(t, e) {
        return Vr.extend(Gr(t, e));
    }
    function jr(t, e) {
        for (var n = [], i = t.length, r = 0; i > r; r++) {
            var a = t[r];
            a.path || a.createPathProxy(), a.__dirtyPath && a.buildPath(a.path, a.shape, !0), 
            n.push(a.path);
        }
        var o = new Vr(e);
        return o.createPathProxy(), o.buildPath = function(t) {
            t.appendPath(n);
            var e = t.getContext();
            e && t.rebuildPath(e);
        }, o;
    }
    function Ur(t, e, n, i, r, a, o) {
        var s = .5 * (n - t), l = .5 * (i - e);
        return (2 * (e - n) + s + l) * o + (-3 * (e - n) - 2 * s - l) * a + s * r + e;
    }
    function Yr(t, e, n) {
        var i = e.points, r = e.smooth;
        if (i && i.length >= 2) {
            if (r && "spline" !== r) {
                var a = Lg(i, r, n, e.smoothConstraint);
                t.moveTo(i[0][0], i[0][1]);
                for (var o = i.length, s = 0; (n ? o : o - 1) > s; s++) {
                    var l = a[2 * s], u = a[2 * s + 1], h = i[(s + 1) % o];
                    t.bezierCurveTo(l[0], l[1], u[0], u[1], h[0], h[1]);
                }
            } else {
                "spline" === r && (i = Og(i, n)), t.moveTo(i[0][0], i[0][1]);
                for (var s = 1, c = i.length; c > s; s++) t.lineTo(i[s][0], i[s][1]);
            }
            n && t.closePath();
        }
    }
    function Zr(t, e, n) {
        var i = n && n.lineWidth;
        if (e && i) {
            var r = e.x1, a = e.x2, o = e.y1, s = e.y2;
            zg(2 * r) === zg(2 * a) ? t.x1 = t.x2 = Kr(r, i, !0) : (t.x1 = r, t.x2 = a), zg(2 * o) === zg(2 * s) ? t.y1 = t.y2 = Kr(o, i, !0) : (t.y1 = o, 
            t.y2 = s);
        }
    }
    function $r(t, e, n) {
        var i = n && n.lineWidth;
        if (e && i) {
            var r = e.x, a = e.y, o = e.width, s = e.height;
            t.x = Kr(r, i, !0), t.y = Kr(a, i, !0), t.width = Math.max(Kr(r + o, i, !1) - t.x, 0 === o ? 0 : 1), 
            t.height = Math.max(Kr(a + s, i, !1) - t.y, 0 === s ? 0 : 1);
        }
    }
    function Kr(t, e, n) {
        var i = zg(2 * t);
        return (i + zg(e)) % 2 === 0 ? i / 2 : (i + (n ? 1 : -1)) / 2;
    }
    function Qr(t, e, n) {
        var i = t.cpx2, r = t.cpy2;
        return null === i || null === r ? [ (n ? hr : ur)(t.x1, t.cpx1, t.cpx2, t.x2, e), (n ? hr : ur)(t.y1, t.cpy1, t.cpy2, t.y2, e) ] : [ (n ? vr : gr)(t.x1, t.cpx1, t.x2, e), (n ? vr : gr)(t.y1, t.cpy1, t.y2, e) ];
    }
    function Jr(t) {
        wi.call(this, t), this._displayables = [], this._temporaryDisplayables = [], this._cursor = 0, 
        this.notClear = !0;
    }
    function ta(t) {
        return Vr.extend(t);
    }
    function ea(t, e) {
        return qr(t, e);
    }
    function na(t, e) {
        rv[t] = e;
    }
    function ia(t) {
        return rv.hasOwnProperty(t) ? rv[t] : void 0;
    }
    function ra(t, e, n, i) {
        var r = Xr(t, e);
        return n && ("center" === i && (n = oa(n, r.getBoundingRect())), sa(r, n)), r;
    }
    function aa(t, e, n) {
        var i = new bi({
            style: {
                image: t,
                x: e.x,
                y: e.y,
                width: e.width,
                height: e.height
            },
            onload: function(t) {
                if ("center" === n) {
                    var r = {
                        width: t.width,
                        height: t.height
                    };
                    i.setStyle(oa(e, r));
                }
            }
        });
        return i;
    }
    function oa(t, e) {
        var n, i = e.width / e.height, r = t.height * i;
        r <= t.width ? n = t.height : (r = t.width, n = r / i);
        var a = t.x + t.width / 2, o = t.y + t.height / 2;
        return {
            x: a - r / 2,
            y: o - n / 2,
            width: r,
            height: n
        };
    }
    function sa(t, e) {
        if (t.applyTransform) {
            var n = t.getBoundingRect(), i = n.calculateTransform(e);
            t.applyTransform(i);
        }
    }
    function la(t) {
        return Zr(t.shape, t.shape, t.style), t;
    }
    function ua(t) {
        return $r(t.shape, t.shape, t.style), t;
    }
    function ha(t) {
        return null != t && "none" !== t;
    }
    function ca(t) {
        if ("string" != typeof t) return t;
        var e = sv.get(t);
        return e || (e = Ke(t, -.1), 1e4 > lv && (sv.set(t, e), lv++)), e;
    }
    function fa(t) {
        if (t.__hoverStlDirty) {
            t.__hoverStlDirty = !1;
            var e = t.__hoverStl;
            if (!e) return void (t.__cachedNormalStl = t.__cachedNormalZ2 = null);
            var n = t.__cachedNormalStl = {};
            t.__cachedNormalZ2 = t.z2;
            var i = t.style;
            for (var r in e) null != e[r] && (n[r] = i[r]);
            n.fill = i.fill, n.stroke = i.stroke;
        }
    }
    function da(t) {
        var e = t.__hoverStl;
        if (e && !t.__highlighted) {
            var n = t.__zr, i = t.useHoverLayer && n && "canvas" === n.painter.type;
            if (t.__highlighted = i ? "layer" : "plain", !(t.isGroup || !n && t.useHoverLayer)) {
                var r = t, a = t.style;
                i && (r = n.addHover(t), a = r.style), za(a), i || fa(r), a.extendFrom(e), pa(a, e, "fill"), 
                pa(a, e, "stroke"), Ba(a), i || (t.dirty(!1), t.z2 += Qg);
            }
        }
    }
    function pa(t, e, n) {
        !ha(e[n]) && ha(t[n]) && (t[n] = ca(t[n]));
    }
    function ga(t) {
        var e = t.__highlighted;
        if (e && (t.__highlighted = !1, !t.isGroup)) if ("layer" === e) t.__zr && t.__zr.removeHover(t); else {
            var n = t.style, i = t.__cachedNormalStl;
            i && (za(n), t.setStyle(i), Ba(n));
            var r = t.__cachedNormalZ2;
            null != r && t.z2 - r === Qg && (t.z2 = r);
        }
    }
    function va(t, e, n) {
        var i, r = ev, a = ev;
        t.__highlighted && (r = tv, i = !0), e(t, n), t.__highlighted && (a = tv, i = !0), 
        t.isGroup && t.traverse(function(t) {
            !t.isGroup && e(t, n);
        }), i && t.__highDownOnUpdate && t.__highDownOnUpdate(r, a);
    }
    function ma(t, e) {
        e = t.__hoverStl = e !== !1 && (t.hoverStyle || e || {}), t.__hoverStlDirty = !0, 
        t.__highlighted && (t.__cachedNormalStl = null, ga(t), da(t));
    }
    function ya(t) {
        !ba(this, t) && !this.__highByOuter && va(this, da);
    }
    function _a(t) {
        !ba(this, t) && !this.__highByOuter && va(this, ga);
    }
    function xa(t) {
        this.__highByOuter |= 1 << (t || 0), va(this, da);
    }
    function wa(t) {
        !(this.__highByOuter &= ~(1 << (t || 0))) && va(this, ga);
    }
    function ba(t, e) {
        return t.__highDownSilentOnTouch && e.zrByTouch;
    }
    function Sa(t, e) {
        Ma(t, !0), va(t, ma, e);
    }
    function Ma(t, e) {
        var n = e === !1;
        if (t.__highDownSilentOnTouch = t.highDownSilentOnTouch, t.__highDownOnUpdate = t.highDownOnUpdate, 
        !n || t.__highDownDispatcher) {
            var i = n ? "off" : "on";
            t[i]("mouseover", ya)[i]("mouseout", _a), t[i]("emphasis", xa)[i]("normal", wa), 
            t.__highByOuter = t.__highByOuter || 0, t.__highDownDispatcher = !n;
        }
    }
    function Ta(t) {
        return !(!t || !t.__highDownDispatcher);
    }
    function Ca(t) {
        var e = iv[t];
        return null == e && 32 >= nv && (e = iv[t] = nv++), e;
    }
    function ka(t, e, n, i, r, a, o) {
        r = r || Kg;
        var s, l = r.labelFetcher, u = r.labelDataIndex, h = r.labelDimIndex, c = n.getShallow("show"), f = i.getShallow("show");
        (c || f) && (l && (s = l.getFormattedLabel(u, "normal", null, h)), null == s && (s = w(r.defaultText) ? r.defaultText(u, r) : r.defaultText));
        var d = c ? s : null, p = f ? D(l ? l.getFormattedLabel(u, "emphasis", null, h) : null, s) : null;
        (null != d || null != p) && (Da(t, n, a, r), Da(e, i, o, r, !0)), t.text = d, e.text = p;
    }
    function Ia(t, e, n) {
        var i = t.style;
        e && (za(i), t.setStyle(e), Ba(i)), i = t.__hoverStl, n && i && (za(i), o(i, n), 
        Ba(i));
    }
    function Da(t, e, n, i, r) {
        return Pa(t, e, i, r), n && o(t, n), t;
    }
    function Aa(t, e, n) {
        var i, r = {
            isRectText: !0
        };
        n === !1 ? i = !0 : r.autoColor = n, Pa(t, e, r, i);
    }
    function Pa(t, e, n, i) {
        if (n = n || Kg, n.isRectText) {
            var r;
            n.getTextPosition ? r = n.getTextPosition(e, i) : (r = e.getShallow("position") || (i ? null : "inside"), 
            "outside" === r && (r = "top")), t.textPosition = r, t.textOffset = e.getShallow("offset");
            var a = e.getShallow("rotate");
            null != a && (a *= Math.PI / 180), t.textRotation = a, t.textDistance = D(e.getShallow("distance"), i ? null : 5);
        }
        var o, s = e.ecModel, l = s && s.option.textStyle, u = Oa(e);
        if (u) {
            o = {};
            for (var h in u) if (u.hasOwnProperty(h)) {
                var c = e.getModel([ "rich", h ]);
                La(o[h] = {}, c, l, n, i);
            }
        }
        return t.rich = o, La(t, e, l, n, i, !0), n.forceRich && !n.textStyle && (n.textStyle = {}), 
        t;
    }
    function Oa(t) {
        for (var e; t && t !== t.ecModel; ) {
            var n = (t.option || Kg).rich;
            if (n) {
                e = e || {};
                for (var i in n) n.hasOwnProperty(i) && (e[i] = 1);
            }
            t = t.parentModel;
        }
        return e;
    }
    function La(t, e, n, i, r, a) {
        n = !r && n || Kg, t.textFill = Ea(e.getShallow("color"), i) || n.color, t.textStroke = Ea(e.getShallow("textBorderColor"), i) || n.textBorderColor, 
        t.textStrokeWidth = D(e.getShallow("textBorderWidth"), n.textBorderWidth), r || (a && (t.insideRollbackOpt = i, 
        Ba(t)), null == t.textFill && (t.textFill = i.autoColor)), t.fontStyle = e.getShallow("fontStyle") || n.fontStyle, 
        t.fontWeight = e.getShallow("fontWeight") || n.fontWeight, t.fontSize = e.getShallow("fontSize") || n.fontSize, 
        t.fontFamily = e.getShallow("fontFamily") || n.fontFamily, t.textAlign = e.getShallow("align"), 
        t.textVerticalAlign = e.getShallow("verticalAlign") || e.getShallow("baseline"), 
        t.textLineHeight = e.getShallow("lineHeight"), t.textWidth = e.getShallow("width"), 
        t.textHeight = e.getShallow("height"), t.textTag = e.getShallow("tag"), a && i.disableBox || (t.textBackgroundColor = Ea(e.getShallow("backgroundColor"), i), 
        t.textPadding = e.getShallow("padding"), t.textBorderColor = Ea(e.getShallow("borderColor"), i), 
        t.textBorderWidth = e.getShallow("borderWidth"), t.textBorderRadius = e.getShallow("borderRadius"), 
        t.textBoxShadowColor = e.getShallow("shadowColor"), t.textBoxShadowBlur = e.getShallow("shadowBlur"), 
        t.textBoxShadowOffsetX = e.getShallow("shadowOffsetX"), t.textBoxShadowOffsetY = e.getShallow("shadowOffsetY")), 
        t.textShadowColor = e.getShallow("textShadowColor") || n.textShadowColor, t.textShadowBlur = e.getShallow("textShadowBlur") || n.textShadowBlur, 
        t.textShadowOffsetX = e.getShallow("textShadowOffsetX") || n.textShadowOffsetX, 
        t.textShadowOffsetY = e.getShallow("textShadowOffsetY") || n.textShadowOffsetY;
    }
    function Ea(t, e) {
        return "auto" !== t ? t : e && e.autoColor ? e.autoColor : null;
    }
    function Ba(t) {
        var e, n = t.textPosition, i = t.insideRollbackOpt;
        if (i && null == t.textFill) {
            var r = i.autoColor, a = i.isRectText, o = i.useInsideStyle, s = o !== !1 && (o === !0 || a && n && "string" == typeof n && n.indexOf("inside") >= 0), l = !s && null != r;
            (s || l) && (e = {
                textFill: t.textFill,
                textStroke: t.textStroke,
                textStrokeWidth: t.textStrokeWidth
            }), s && (t.textFill = "#fff", null == t.textStroke && (t.textStroke = r, null == t.textStrokeWidth && (t.textStrokeWidth = 2))), 
            l && (t.textFill = r);
        }
        t.insideRollback = e;
    }
    function za(t) {
        var e = t.insideRollback;
        e && (t.textFill = e.textFill, t.textStroke = e.textStroke, t.textStrokeWidth = e.textStrokeWidth, 
        t.insideRollback = null);
    }
    function Ra(t, e) {
        var n = e || e.getModel("textStyle");
        return E([ t.fontStyle || n && n.getShallow("fontStyle") || "", t.fontWeight || n && n.getShallow("fontWeight") || "", (t.fontSize || n && n.getShallow("fontSize") || 12) + "px", t.fontFamily || n && n.getShallow("fontFamily") || "sans-serif" ].join(" "));
    }
    function Fa(t, e, n, i, r, a) {
        "function" == typeof r && (a = r, r = null);
        var o = i && i.isAnimationEnabled();
        if (o) {
            var s = t ? "Update" : "", l = i.getShallow("animationDuration" + s), u = i.getShallow("animationEasing" + s), h = i.getShallow("animationDelay" + s);
            "function" == typeof h && (h = h(r, i.getAnimationDelayParams ? i.getAnimationDelayParams(e, r) : null)), 
            "function" == typeof l && (l = l(r)), l > 0 ? e.animateTo(n, l, h || 0, u, a, !!a) : (e.stopAnimation(), 
            e.attr(n), a && a());
        } else e.stopAnimation(), e.attr(n), a && a();
    }
    function Na(t, e, n, i, r) {
        Fa(!0, t, e, n, i, r);
    }
    function Va(t, e, n, i, r) {
        Fa(!1, t, e, n, i, r);
    }
    function Ha(t, e) {
        for (var n = Ie([]); t && t !== e; ) Ae(n, t.getLocalTransform(), n), t = t.parent;
        return n;
    }
    function Wa(t, e, n) {
        return e && !f(e) && (e = Rf.getLocalTransform(e)), n && (e = Ee([], e)), ae([], t, e);
    }
    function Ga(t, e, n) {
        var i = 0 === e[4] || 0 === e[5] || 0 === e[0] ? 1 : Math.abs(2 * e[4] / e[0]), r = 0 === e[4] || 0 === e[5] || 0 === e[2] ? 1 : Math.abs(2 * e[4] / e[2]), a = [ "left" === t ? -i : "right" === t ? i : 0, "top" === t ? -r : "bottom" === t ? r : 0 ];
        return a = Wa(a, e, n), Math.abs(a[0]) > Math.abs(a[1]) ? a[0] > 0 ? "right" : "left" : a[1] > 0 ? "bottom" : "top";
    }
    function Xa(t, e, n) {
        function i(t) {
            var e = {};
            return t.traverse(function(t) {
                !t.isGroup && t.anid && (e[t.anid] = t);
            }), e;
        }
        function r(t) {
            var e = {
                position: G(t.position),
                rotation: t.rotation
            };
            return t.shape && (e.shape = o({}, t.shape)), e;
        }
        if (t && e) {
            var a = i(t);
            e.traverse(function(t) {
                if (!t.isGroup && t.anid) {
                    var e = a[t.anid];
                    if (e) {
                        var i = r(t);
                        t.attr(r(e)), Na(t, i, n, t.dataIndex);
                    }
                }
            });
        }
    }
    function qa(t, e) {
        return p(t, function(t) {
            var n = t[0];
            n = Zg(n, e.x), n = $g(n, e.x + e.width);
            var i = t[1];
            return i = Zg(i, e.y), i = $g(i, e.y + e.height), [ n, i ];
        });
    }
    function ja(t, e) {
        var n = Zg(t.x, e.x), i = $g(t.x + t.width, e.x + e.width), r = Zg(t.y, e.y), a = $g(t.y + t.height, e.y + e.height);
        return i >= n && a >= r ? {
            x: n,
            y: r,
            width: i - n,
            height: a - r
        } : void 0;
    }
    function Ua(t, e, n) {
        e = o({
            rectHover: !0
        }, e);
        var i = e.style = {
            strokeNoScale: !0
        };
        return n = n || {
            x: -1,
            y: -1,
            width: 2,
            height: 2
        }, t ? 0 === t.indexOf("image://") ? (i.image = t.slice(8), s(i, n), new bi(e)) : ra(t.replace("path://", ""), e, n, "center") : void 0;
    }
    function Ya(t, e, n, i, r) {
        for (var a = 0, o = r[r.length - 1]; a < r.length; a++) {
            var s = r[a];
            if (Za(t, e, n, i, s[0], s[1], o[0], o[1])) return !0;
            o = s;
        }
    }
    function Za(t, e, n, i, r, a, o, s) {
        var l = n - t, u = i - e, h = o - r, c = s - a, f = $a(h, c, l, u);
        if (Ka(f)) return !1;
        var d = t - r, p = e - a, g = $a(d, p, l, u) / f;
        if (0 > g || g > 1) return !1;
        var v = $a(d, p, h, c) / f;
        return 0 > v || v > 1 ? !1 : !0;
    }
    function $a(t, e, n, i) {
        return t * i - n * e;
    }
    function Ka(t) {
        return 1e-6 >= t && t >= -1e-6;
    }
    function Qa(t, e, n) {
        this.parentModel = e, this.ecModel = n, this.option = t;
    }
    function Ja(t, e, n) {
        for (var i = 0; i < e.length && (!e[i] || (t = t && "object" == typeof t ? t[e[i]] : null, 
        null != t)); i++) ;
        return null == t && n && (t = n.get(e)), t;
    }
    function to(t, e) {
        var n = gv(t).getParent;
        return n ? n.call(t, e) : t.parentModel;
    }
    function eo(t) {
        return [ t || "", vv++, Math.random().toFixed(5) ].join("_");
    }
    function no(t) {
        var e = {};
        return t.registerSubTypeDefaulter = function(t, n) {
            t = tr(t), e[t.main] = n;
        }, t.determineSubType = function(n, i) {
            var r = i.type;
            if (!r) {
                var a = tr(n).main;
                t.hasSubTypes(n) && e[a] && (r = e[a](i));
            }
            return r;
        }, t;
    }
    function io(t, e) {
        function n(t) {
            var n = {}, a = [];
            return d(t, function(o) {
                var s = i(n, o), l = s.originalDeps = e(o), h = r(l, t);
                s.entryCount = h.length, 0 === s.entryCount && a.push(o), d(h, function(t) {
                    u(s.predecessor, t) < 0 && s.predecessor.push(t);
                    var e = i(n, t);
                    u(e.successor, t) < 0 && e.successor.push(o);
                });
            }), {
                graph: n,
                noEntryList: a
            };
        }
        function i(t, e) {
            return t[e] || (t[e] = {
                predecessor: [],
                successor: []
            }), t[e];
        }
        function r(t, e) {
            var n = [];
            return d(t, function(t) {
                u(e, t) >= 0 && n.push(t);
            }), n;
        }
        t.topologicalTravel = function(t, e, i, r) {
            function a(t) {
                l[t].entryCount--, 0 === l[t].entryCount && u.push(t);
            }
            function o(t) {
                h[t] = !0, a(t);
            }
            if (t.length) {
                var s = n(e), l = s.graph, u = s.noEntryList, h = {};
                for (d(t, function(t) {
                    h[t] = !0;
                }); u.length; ) {
                    var c = u.pop(), f = l[c], p = !!h[c];
                    p && (i.call(r, c, f.originalDeps.slice()), delete h[c]), d(f.successor, p ? o : a);
                }
                d(h, function() {
                    throw new Error("Circle dependency may exists");
                });
            }
        };
    }
    function ro(t) {
        return t.replace(/^\s+|\s+$/g, "");
    }
    function ao(t, e, n, i) {
        var r = e[1] - e[0], a = n[1] - n[0];
        if (0 === r) return 0 === a ? n[0] : (n[0] + n[1]) / 2;
        if (i) if (r > 0) {
            if (t <= e[0]) return n[0];
            if (t >= e[1]) return n[1];
        } else {
            if (t >= e[0]) return n[0];
            if (t <= e[1]) return n[1];
        } else {
            if (t === e[0]) return n[0];
            if (t === e[1]) return n[1];
        }
        return (t - e[0]) / r * a + n[0];
    }
    function oo(t, e) {
        switch (t) {
          case "center":
          case "middle":
            t = "50%";
            break;

          case "left":
          case "top":
            t = "0%";
            break;

          case "right":
          case "bottom":
            t = "100%";
        }
        return "string" == typeof t ? ro(t).match(/%$/) ? parseFloat(t) / 100 * e : parseFloat(t) : null == t ? 0 / 0 : +t;
    }
    function so(t, e, n) {
        return null == e && (e = 10), e = Math.min(Math.max(0, e), 20), t = (+t).toFixed(e), 
        n ? t : +t;
    }
    function lo(t) {
        return t.sort(function(t, e) {
            return t - e;
        }), t;
    }
    function uo(t) {
        if (t = +t, isNaN(t)) return 0;
        for (var e = 1, n = 0; Math.round(t * e) / e !== t; ) e *= 10, n++;
        return n;
    }
    function ho(t) {
        var e = t.toString(), n = e.indexOf("e");
        if (n > 0) {
            var i = +e.slice(n + 1);
            return 0 > i ? -i : 0;
        }
        var r = e.indexOf(".");
        return 0 > r ? 0 : e.length - 1 - r;
    }
    function co(t, e) {
        var n = Math.log, i = Math.LN10, r = Math.floor(n(t[1] - t[0]) / i), a = Math.round(n(Math.abs(e[1] - e[0])) / i), o = Math.min(Math.max(-r + a, 0), 20);
        return isFinite(o) ? o : 20;
    }
    function fo(t, e, n) {
        if (!t[e]) return 0;
        var i = g(t, function(t, e) {
            return t + (isNaN(e) ? 0 : e);
        }, 0);
        if (0 === i) return 0;
        for (var r = Math.pow(10, n), a = p(t, function(t) {
            return (isNaN(t) ? 0 : t) / i * r * 100;
        }), o = 100 * r, s = p(a, function(t) {
            return Math.floor(t);
        }), l = g(s, function(t, e) {
            return t + e;
        }, 0), u = p(a, function(t, e) {
            return t - s[e];
        }); o > l; ) {
            for (var h = Number.NEGATIVE_INFINITY, c = null, f = 0, d = u.length; d > f; ++f) u[f] > h && (h = u[f], 
            c = f);
            ++s[c], u[c] = 0, ++l;
        }
        return s[e] / r;
    }
    function po(t) {
        var e = 2 * Math.PI;
        return (t % e + e) % e;
    }
    function go(t) {
        return t > -mv && mv > t;
    }
    function vo(t) {
        if (t instanceof Date) return t;
        if ("string" == typeof t) {
            var e = _v.exec(t);
            if (!e) return new Date(0 / 0);
            if (e[8]) {
                var n = +e[4] || 0;
                return "Z" !== e[8].toUpperCase() && (n -= e[8].slice(0, 3)), new Date(Date.UTC(+e[1], +(e[2] || 1) - 1, +e[3] || 1, n, +(e[5] || 0), +e[6] || 0, +e[7] || 0));
            }
            return new Date(+e[1], +(e[2] || 1) - 1, +e[3] || 1, +e[4] || 0, +(e[5] || 0), +e[6] || 0, +e[7] || 0);
        }
        return new Date(null == t ? 0 / 0 : Math.round(t));
    }
    function mo(t) {
        return Math.pow(10, yo(t));
    }
    function yo(t) {
        return Math.floor(Math.log(t) / Math.LN10);
    }
    function _o(t, e) {
        var n, i = yo(t), r = Math.pow(10, i), a = t / r;
        return n = e ? 1.5 > a ? 1 : 2.5 > a ? 2 : 4 > a ? 3 : 7 > a ? 5 : 10 : 1 > a ? 1 : 2 > a ? 2 : 3 > a ? 3 : 5 > a ? 5 : 10, 
        t = n * r, i >= -20 ? +t.toFixed(0 > i ? -i : 0) : t;
    }
    function xo(t, e) {
        var n = (t.length - 1) * e + 1, i = Math.floor(n), r = +t[i - 1], a = n - i;
        return a ? r + a * (t[i] - r) : r;
    }
    function wo(t) {
        function e(t, n, i) {
            return t.interval[i] < n.interval[i] || t.interval[i] === n.interval[i] && (t.close[i] - n.close[i] === (i ? -1 : 1) || !i && e(t, n, 1));
        }
        t.sort(function(t, n) {
            return e(t, n, 0) ? -1 : 1;
        });
        for (var n = -1 / 0, i = 1, r = 0; r < t.length; ) {
            for (var a = t[r].interval, o = t[r].close, s = 0; 2 > s; s++) a[s] <= n && (a[s] = n, 
            o[s] = s ? 1 : 1 - i), n = a[s], i = o[s];
            a[0] === a[1] && o[0] * o[1] !== 1 ? t.splice(r, 1) : r++;
        }
        return t;
    }
    function bo(t) {
        return t - parseFloat(t) >= 0;
    }
    function So(t) {
        return isNaN(t) ? "-" : (t = (t + "").split("."), t[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g, "$1,") + (t.length > 1 ? "." + t[1] : ""));
    }
    function Mo(t, e) {
        return t = (t || "").toLowerCase().replace(/-(.)/g, function(t, e) {
            return e.toUpperCase();
        }), e && t && (t = t.charAt(0).toUpperCase() + t.slice(1)), t;
    }
    function To(t) {
        return null == t ? "" : (t + "").replace(bv, function(t, e) {
            return Sv[e];
        });
    }
    function Co(t, e, n) {
        x(e) || (e = [ e ]);
        var i = e.length;
        if (!i) return "";
        for (var r = e[0].$vars || [], a = 0; a < r.length; a++) {
            var o = Mv[a];
            t = t.replace(Tv(o), Tv(o, 0));
        }
        for (var s = 0; i > s; s++) for (var l = 0; l < r.length; l++) {
            var u = e[s][r[l]];
            t = t.replace(Tv(Mv[l], s), n ? To(u) : u);
        }
        return t;
    }
    function ko(t, e, n) {
        return d(e, function(e, i) {
            t = t.replace("{" + i + "}", n ? To(e) : e);
        }), t;
    }
    function Io(t, e) {
        t = b(t) ? {
            color: t,
            extraCssText: e
        } : t || {};
        var n = t.color, i = t.type, e = t.extraCssText, r = t.renderMode || "html", a = t.markerId || "X";
        return n ? "html" === r ? "subItem" === i ? '<span style="display:inline-block;vertical-align:middle;margin-right:8px;margin-left:3px;border-radius:4px;width:4px;height:4px;background-color:' + To(n) + ";" + (e || "") + '"></span>' : '<span style="display:inline-block;margin-right:5px;border-radius:10px;width:10px;height:10px;background-color:' + To(n) + ";" + (e || "") + '"></span>' : {
            renderMode: r,
            content: "{marker" + a + "|}  ",
            style: {
                color: n
            }
        } : "";
    }
    function Do(t, e) {
        return t += "", "0000".substr(0, e - t.length) + t;
    }
    function Ao(t, e, n) {
        ("week" === t || "month" === t || "quarter" === t || "half-year" === t || "year" === t) && (t = "MM-dd\nyyyy");
        var i = vo(e), r = n ? "UTC" : "", a = i["get" + r + "FullYear"](), o = i["get" + r + "Month"]() + 1, s = i["get" + r + "Date"](), l = i["get" + r + "Hours"](), u = i["get" + r + "Minutes"](), h = i["get" + r + "Seconds"](), c = i["get" + r + "Milliseconds"]();
        return t = t.replace("MM", Do(o, 2)).replace("M", o).replace("yyyy", a).replace("yy", a % 100).replace("dd", Do(s, 2)).replace("d", s).replace("hh", Do(l, 2)).replace("h", l).replace("mm", Do(u, 2)).replace("m", u).replace("ss", Do(h, 2)).replace("s", h).replace("SSS", Do(c, 3));
    }
    function Po(t) {
        return t ? t.charAt(0).toUpperCase() + t.substr(1) : t;
    }
    function Oo(t) {
        return Vn(t.text, t.font, t.textAlign, t.textVerticalAlign, t.textPadding, t.textLineHeight, t.rich, t.truncate);
    }
    function Lo(t, e, n, i, r, a, o, s) {
        return Vn(t, e, n, i, r, s, a, o);
    }
    function Eo(t, e, n, i, r) {
        var a = 0, o = 0;
        null == i && (i = 1 / 0), null == r && (r = 1 / 0);
        var s = 0;
        e.eachChild(function(l, u) {
            var h, c, f = l.position, d = l.getBoundingRect(), p = e.childAt(u + 1), g = p && p.getBoundingRect();
            if ("horizontal" === t) {
                var v = d.width + (g ? -g.x + d.x : 0);
                h = a + v, h > i || l.newline ? (a = 0, h = v, o += s + n, s = d.height) : s = Math.max(s, d.height);
            } else {
                var m = d.height + (g ? -g.y + d.y : 0);
                c = o + m, c > r || l.newline ? (a += s + n, o = 0, c = m, s = d.width) : s = Math.max(s, d.width);
            }
            l.newline || (f[0] = a, f[1] = o, "horizontal" === t ? a = h + n : o = c + n);
        });
    }
    function Bo(t, e, n) {
        n = wv(n || 0);
        var i = e.width, r = e.height, a = oo(t.left, i), o = oo(t.top, r), s = oo(t.right, i), l = oo(t.bottom, r), u = oo(t.width, i), h = oo(t.height, r), c = n[2] + n[0], f = n[1] + n[3], d = t.aspect;
        switch (isNaN(u) && (u = i - s - f - a), isNaN(h) && (h = r - l - c - o), null != d && (isNaN(u) && isNaN(h) && (d > i / r ? u = .8 * i : h = .8 * r), 
        isNaN(u) && (u = d * h), isNaN(h) && (h = u / d)), isNaN(a) && (a = i - s - u - f), 
        isNaN(o) && (o = r - l - h - c), t.left || t.right) {
          case "center":
            a = i / 2 - u / 2 - n[3];
            break;

          case "right":
            a = i - u - f;
        }
        switch (t.top || t.bottom) {
          case "middle":
          case "center":
            o = r / 2 - h / 2 - n[0];
            break;

          case "bottom":
            o = r - h - c;
        }
        a = a || 0, o = o || 0, isNaN(u) && (u = i - f - a - (s || 0)), isNaN(h) && (h = r - c - o - (l || 0));
        var p = new wn(a + n[3], o + n[0], u, h);
        return p.margin = n, p;
    }
    function zo(t, e, n) {
        function i(n, i) {
            var o = {}, l = 0, u = {}, h = 0, c = 2;
            if (Iv(n, function(e) {
                u[e] = t[e];
            }), Iv(n, function(t) {
                r(e, t) && (o[t] = u[t] = e[t]), a(o, t) && l++, a(u, t) && h++;
            }), s[i]) return a(e, n[1]) ? u[n[2]] = null : a(e, n[2]) && (u[n[1]] = null), u;
            if (h !== c && l) {
                if (l >= c) return o;
                for (var f = 0; f < n.length; f++) {
                    var d = n[f];
                    if (!r(o, d) && r(t, d)) {
                        o[d] = t[d];
                        break;
                    }
                }
                return o;
            }
            return u;
        }
        function r(t, e) {
            return t.hasOwnProperty(e);
        }
        function a(t, e) {
            return null != t[e] && "auto" !== t[e];
        }
        function o(t, e, n) {
            Iv(t, function(t) {
                e[t] = n[t];
            });
        }
        !S(n) && (n = {});
        var s = n.ignoreSize;
        !x(s) && (s = [ s, s ]);
        var l = i(Av[0], 0), u = i(Av[1], 1);
        o(Av[0], t, l), o(Av[1], t, u);
    }
    function Ro(t) {
        return Fo({}, t);
    }
    function Fo(t, e) {
        return e && t && Iv(Dv, function(n) {
            e.hasOwnProperty(n) && (t[n] = e[n]);
        }), t;
    }
    function No(t) {
        var e = [];
        return d(Lv.getClassesByMainType(t), function(t) {
            e = e.concat(t.prototype.dependencies || []);
        }), e = p(e, function(t) {
            return tr(t).main;
        }), "dataset" !== t && u(e, "dataset") <= 0 && e.unshift("dataset"), e;
    }
    function Vo(t, e) {
        for (var n = t.length, i = 0; n > i; i++) if (t[i].length > e) return t[i];
        return t[n - 1];
    }
    function Ho(t) {
        var e = t.get("coordinateSystem"), n = {
            coordSysName: e,
            coordSysDims: [],
            axisMap: F(),
            categoryAxisMap: F()
        }, i = Fv[e];
        return i ? (i(t, n, n.axisMap, n.categoryAxisMap), n) : void 0;
    }
    function Wo(t) {
        return "category" === t.get("type");
    }
    function Go(t) {
        this.fromDataset = t.fromDataset, this.data = t.data || (t.sourceFormat === Wv ? {} : []), 
        this.sourceFormat = t.sourceFormat || Gv, this.seriesLayoutBy = t.seriesLayoutBy || qv, 
        this.dimensionsDefine = t.dimensionsDefine, this.encodeDefine = t.encodeDefine && F(t.encodeDefine), 
        this.startIndex = t.startIndex || 0, this.dimensionsDetectCount = t.dimensionsDetectCount;
    }
    function Xo(t) {
        var e = t.option.source, n = Gv;
        if (T(e)) n = Xv; else if (x(e)) {
            0 === e.length && (n = Vv);
            for (var i = 0, r = e.length; r > i; i++) {
                var a = e[i];
                if (null != a) {
                    if (x(a)) {
                        n = Vv;
                        break;
                    }
                    if (S(a)) {
                        n = Hv;
                        break;
                    }
                }
            }
        } else if (S(e)) {
            for (var o in e) if (e.hasOwnProperty(o) && f(e[o])) {
                n = Wv;
                break;
            }
        } else if (null != e) throw new Error("Invalid data");
        Uv(t).sourceFormat = n;
    }
    function qo(t) {
        return Uv(t).source;
    }
    function jo(t) {
        Uv(t).datasetMap = F();
    }
    function Uo(t) {
        var e = t.option, n = e.data, i = T(n) ? Xv : Nv, r = !1, a = e.seriesLayoutBy, o = e.sourceHeader, s = e.dimensions, l = Jo(t);
        if (l) {
            var u = l.option;
            n = u.source, i = Uv(l).sourceFormat, r = !0, a = a || u.seriesLayoutBy, null == o && (o = u.sourceHeader), 
            s = s || u.dimensions;
        }
        var h = Yo(n, i, a, o, s), c = e.encode;
        !c && l && (c = Qo(t, l, n, i, a, h)), Uv(t).source = new Go({
            data: n,
            fromDataset: r,
            seriesLayoutBy: a,
            sourceFormat: i,
            dimensionsDefine: h.dimensionsDefine,
            startIndex: h.startIndex,
            dimensionsDetectCount: h.dimensionsDetectCount,
            encodeDefine: c
        });
    }
    function Yo(t, e, n, i, r) {
        if (!t) return {
            dimensionsDefine: Zo(r)
        };
        var a, o, s;
        if (e === Vv) "auto" === i || null == i ? $o(function(t) {
            null != t && "-" !== t && (b(t) ? null == o && (o = 1) : o = 0);
        }, n, t, 10) : o = i ? 1 : 0, r || 1 !== o || (r = [], $o(function(t, e) {
            r[e] = null != t ? t : "";
        }, n, t)), a = r ? r.length : n === jv ? t.length : t[0] ? t[0].length : null; else if (e === Hv) r || (r = Ko(t), 
        s = !0); else if (e === Wv) r || (r = [], s = !0, d(t, function(t, e) {
            r.push(e);
        })); else if (e === Nv) {
            var l = Hi(t[0]);
            a = x(l) && l.length || 1;
        }
        var u;
        return s && d(r, function(t, e) {
            "name" === (S(t) ? t.name : t) && (u = e);
        }), {
            startIndex: o,
            dimensionsDefine: Zo(r),
            dimensionsDetectCount: a,
            potentialNameDimIndex: u
        };
    }
    function Zo(t) {
        if (t) {
            var e = F();
            return p(t, function(t) {
                if (t = o({}, S(t) ? t : {
                    name: t
                }), null == t.name) return t;
                t.name += "", null == t.displayName && (t.displayName = t.name);
                var n = e.get(t.name);
                return n ? t.name += "-" + n.count++ : e.set(t.name, {
                    count: 1
                }), t;
            });
        }
    }
    function $o(t, e, n, i) {
        if (null == i && (i = 1 / 0), e === jv) for (var r = 0; r < n.length && i > r; r++) t(n[r] ? n[r][0] : null, r); else for (var a = n[0] || [], r = 0; r < a.length && i > r; r++) t(a[r], r);
    }
    function Ko(t) {
        for (var e, n = 0; n < t.length && !(e = t[n++]); ) ;
        if (e) {
            var i = [];
            return d(e, function(t, e) {
                i.push(e);
            }), i;
        }
    }
    function Qo(t, e, n, i, r, a) {
        var o = Ho(t), s = {}, l = [], u = [], h = t.subType, c = F([ "pie", "map", "funnel" ]), f = F([ "line", "bar", "pictorialBar", "scatter", "effectScatter", "candlestick", "boxplot" ]);
        if (o && null != f.get(h)) {
            var p = t.ecModel, g = Uv(p).datasetMap, v = e.uid + "_" + r, m = g.get(v) || g.set(v, {
                categoryWayDim: 1,
                valueWayDim: 0
            });
            d(o.coordSysDims, function(t) {
                if (null == o.firstCategoryDimIndex) {
                    var e = m.valueWayDim++;
                    s[t] = e, u.push(e);
                } else if (o.categoryAxisMap.get(t)) s[t] = 0, l.push(0); else {
                    var e = m.categoryWayDim++;
                    s[t] = e, u.push(e);
                }
            });
        } else if (null != c.get(h)) {
            for (var y, _ = 0; 5 > _ && null == y; _++) es(n, i, r, a.dimensionsDefine, a.startIndex, _) || (y = _);
            if (null != y) {
                s.value = y;
                var x = a.potentialNameDimIndex || Math.max(y - 1, 0);
                u.push(x), l.push(x);
            }
        }
        return l.length && (s.itemName = l), u.length && (s.seriesName = u), s;
    }
    function Jo(t) {
        var e = t.option, n = e.data;
        return n ? void 0 : t.ecModel.getComponent("dataset", e.datasetIndex || 0);
    }
    function ts(t, e) {
        return es(t.data, t.sourceFormat, t.seriesLayoutBy, t.dimensionsDefine, t.startIndex, e);
    }
    function es(t, e, n, i, r, a) {
        function o(t) {
            return null != t && isFinite(t) && "" !== t ? !1 : b(t) && "-" !== t ? !0 : void 0;
        }
        var s, l = 5;
        if (T(t)) return !1;
        var u;
        if (i && (u = i[a], u = S(u) ? u.name : u), e === Vv) if (n === jv) {
            for (var h = t[a], c = 0; c < (h || []).length && l > c; c++) if (null != (s = o(h[r + c]))) return s;
        } else for (var c = 0; c < t.length && l > c; c++) {
            var f = t[r + c];
            if (f && null != (s = o(f[a]))) return s;
        } else if (e === Hv) {
            if (!u) return;
            for (var c = 0; c < t.length && l > c; c++) {
                var d = t[c];
                if (d && null != (s = o(d[u]))) return s;
            }
        } else if (e === Wv) {
            if (!u) return;
            var h = t[u];
            if (!h || T(h)) return !1;
            for (var c = 0; c < h.length && l > c; c++) if (null != (s = o(h[c]))) return s;
        } else if (e === Nv) for (var c = 0; c < t.length && l > c; c++) {
            var d = t[c], p = Hi(d);
            if (!x(p)) return !1;
            if (null != (s = o(p[a]))) return s;
        }
        return !1;
    }
    function ns(t, e) {
        if (e) {
            var n = e.seiresIndex, i = e.seriesId, r = e.seriesName;
            return null != n && t.componentIndex !== n || null != i && t.id !== i || null != r && t.name !== r;
        }
    }
    function is(t, e) {
        var n = t.color && !t.colorLayer;
        d(e, function(e, a) {
            "colorLayer" === a && n || Lv.hasClass(a) || ("object" == typeof e ? t[a] = t[a] ? r(t[a], e, !1) : i(e) : null == t[a] && (t[a] = e));
        });
    }
    function rs(t) {
        t = t, this.option = {}, this.option[Yv] = 1, this._componentsMap = F({
            series: []
        }), this._seriesIndices, this._seriesIndicesMap, is(t, this._theme.option), r(t, Bv, !1), 
        this.mergeOption(t);
    }
    function as(t, e) {
        x(e) || (e = e ? [ e ] : []);
        var n = {};
        return d(e, function(e) {
            n[e] = (t.get(e) || []).slice();
        }), n;
    }
    function os(t, e, n) {
        var i = e.type ? e.type : n ? n.subType : Lv.determineSubType(t, e);
        return i;
    }
    function ss(t, e) {
        t._seriesIndicesMap = F(t._seriesIndices = p(e, function(t) {
            return t.componentIndex;
        }) || []);
    }
    function ls(t, e) {
        return e.hasOwnProperty("subType") ? v(t, function(t) {
            return t.subType === e.subType;
        }) : t;
    }
    function us(t) {
        d($v, function(e) {
            this[e] = y(t[e], t);
        }, this);
    }
    function hs() {
        this._coordinateSystems = [];
    }
    function cs(t) {
        this._api = t, this._timelineOptions = [], this._mediaList = [], this._mediaDefault, 
        this._currentMediaIndices = [], this._optionBackup, this._newBaseOption;
    }
    function fs(t, e, n) {
        var i, r, a = [], o = [], s = t.timeline;
        if (t.baseOption && (r = t.baseOption), (s || t.options) && (r = r || {}, a = (t.options || []).slice()), 
        t.media) {
            r = r || {};
            var l = t.media;
            Qv(l, function(t) {
                t && t.option && (t.query ? o.push(t) : i || (i = t));
            });
        }
        return r || (r = t), r.timeline || (r.timeline = s), Qv([ r ].concat(a).concat(p(o, function(t) {
            return t.option;
        })), function(t) {
            Qv(e, function(e) {
                e(t, n);
            });
        }), {
            baseOption: r,
            timelineOptions: a,
            mediaDefault: i,
            mediaList: o
        };
    }
    function ds(t, e, n) {
        var i = {
            width: e,
            height: n,
            aspectratio: e / n
        }, r = !0;
        return d(t, function(t, e) {
            var n = e.match(nm);
            if (n && n[1] && n[2]) {
                var a = n[1], o = n[2].toLowerCase();
                ps(i[o], t, a) || (r = !1);
            }
        }), r;
    }
    function ps(t, e, n) {
        return "min" === n ? t >= e : "max" === n ? e >= t : t === e;
    }
    function gs(t, e) {
        return t.join(",") === e.join(",");
    }
    function vs(t, e) {
        e = e || {}, Qv(e, function(e, n) {
            if (null != e) {
                var i = t[n];
                if (Lv.hasClass(n)) {
                    e = Ni(e), i = Ni(i);
                    var r = Gi(i, e);
                    t[n] = tm(r, function(t) {
                        return t.option && t.exist ? em(t.exist, t.option, !0) : t.exist || t.option;
                    });
                } else t[n] = em(i, e, !0);
            }
        });
    }
    function ms(t) {
        var e = t && t.itemStyle;
        if (e) for (var n = 0, i = am.length; i > n; n++) {
            var a = am[n], o = e.normal, s = e.emphasis;
            o && o[a] && (t[a] = t[a] || {}, t[a].normal ? r(t[a].normal, o[a]) : t[a].normal = o[a], 
            o[a] = null), s && s[a] && (t[a] = t[a] || {}, t[a].emphasis ? r(t[a].emphasis, s[a]) : t[a].emphasis = s[a], 
            s[a] = null);
        }
    }
    function ys(t, e, n) {
        if (t && t[e] && (t[e].normal || t[e].emphasis)) {
            var i = t[e].normal, r = t[e].emphasis;
            i && (n ? (t[e].normal = t[e].emphasis = null, s(t[e], i)) : t[e] = i), r && (t.emphasis = t.emphasis || {}, 
            t.emphasis[e] = r);
        }
    }
    function _s(t) {
        ys(t, "itemStyle"), ys(t, "lineStyle"), ys(t, "areaStyle"), ys(t, "label"), ys(t, "labelLine"), 
        ys(t, "upperLabel"), ys(t, "edgeLabel");
    }
    function xs(t, e) {
        var n = rm(t) && t[e], i = rm(n) && n.textStyle;
        if (i) for (var r = 0, a = pp.length; a > r; r++) {
            var e = pp[r];
            i.hasOwnProperty(e) && (n[e] = i[e]);
        }
    }
    function ws(t) {
        t && (_s(t), xs(t, "label"), t.emphasis && xs(t.emphasis, "label"));
    }
    function bs(t) {
        if (rm(t)) {
            ms(t), _s(t), xs(t, "label"), xs(t, "upperLabel"), xs(t, "edgeLabel"), t.emphasis && (xs(t.emphasis, "label"), 
            xs(t.emphasis, "upperLabel"), xs(t.emphasis, "edgeLabel"));
            var e = t.markPoint;
            e && (ms(e), ws(e));
            var n = t.markLine;
            n && (ms(n), ws(n));
            var i = t.markArea;
            i && ws(i);
            var r = t.data;
            if ("graph" === t.type) {
                r = r || t.nodes;
                var a = t.links || t.edges;
                if (a && !T(a)) for (var o = 0; o < a.length; o++) ws(a[o]);
                d(t.categories, function(t) {
                    _s(t);
                });
            }
            if (r && !T(r)) for (var o = 0; o < r.length; o++) ws(r[o]);
            var e = t.markPoint;
            if (e && e.data) for (var s = e.data, o = 0; o < s.length; o++) ws(s[o]);
            var n = t.markLine;
            if (n && n.data) for (var l = n.data, o = 0; o < l.length; o++) x(l[o]) ? (ws(l[o][0]), 
            ws(l[o][1])) : ws(l[o]);
            "gauge" === t.type ? (xs(t, "axisLabel"), xs(t, "title"), xs(t, "detail")) : "treemap" === t.type ? (ys(t.breadcrumb, "itemStyle"), 
            d(t.levels, function(t) {
                _s(t);
            })) : "tree" === t.type && _s(t.leaves);
        }
    }
    function Ss(t) {
        return x(t) ? t : t ? [ t ] : [];
    }
    function Ms(t) {
        return (x(t) ? t[0] : t) || {};
    }
    function Ts(t, e) {
        e = e.split(",");
        for (var n = t, i = 0; i < e.length && (n = n && n[e[i]], null != n); i++) ;
        return n;
    }
    function Cs(t, e, n, i) {
        e = e.split(",");
        for (var r, a = t, o = 0; o < e.length - 1; o++) r = e[o], null == a[r] && (a[r] = {}), 
        a = a[r];
        (i || null == a[e[o]]) && (a[e[o]] = n);
    }
    function ks(t) {
        d(sm, function(e) {
            e[0] in t && !(e[1] in t) && (t[e[1]] = t[e[0]]);
        });
    }
    function Is(t) {
        d(t, function(e, n) {
            var i = [], r = [ 0 / 0, 0 / 0 ], a = [ e.stackResultDimension, e.stackedOverDimension ], o = e.data, s = e.isStackedByIndex, l = o.map(a, function(a, l, u) {
                var h = o.get(e.stackedDimension, u);
                if (isNaN(h)) return r;
                var c, f;
                s ? f = o.getRawIndex(u) : c = o.get(e.stackedByDimension, u);
                for (var d = 0 / 0, p = n - 1; p >= 0; p--) {
                    var g = t[p];
                    if (s || (f = g.data.rawIndexOf(g.stackedByDimension, c)), f >= 0) {
                        var v = g.data.getByRawIndex(g.stackResultDimension, f);
                        if (h >= 0 && v > 0 || 0 >= h && 0 > v) {
                            h += v, d = v;
                            break;
                        }
                    }
                }
                return i[0] = h, i[1] = d, i;
            });
            o.hostModel.setData(l), e.data = l;
        });
    }
    function Ds(t, e) {
        Go.isInstance(t) || (t = Go.seriesDataToSource(t)), this._source = t;
        var n = this._data = t.data, i = t.sourceFormat;
        i === Xv && (this._offset = 0, this._dimSize = e, this._data = n);
        var r = fm[i === Vv ? i + "_" + t.seriesLayoutBy : i];
        o(this, r);
    }
    function As() {
        return this._data.length;
    }
    function Ps(t) {
        return this._data[t];
    }
    function Os(t) {
        for (var e = 0; e < t.length; e++) this._data.push(t[e]);
    }
    function Ls(t, e, n) {
        return null != n ? t[n] : t;
    }
    function Es(t, e, n, i) {
        return Bs(t[i], this._dimensionInfos[e]);
    }
    function Bs(t, e) {
        var n = e && e.type;
        if ("ordinal" === n) {
            var i = e && e.ordinalMeta;
            return i ? i.parseAndCollect(t) : t;
        }
        return "time" === n && "number" != typeof t && null != t && "-" !== t && (t = +vo(t)), 
        null == t || "" === t ? 0 / 0 : +t;
    }
    function zs(t, e, n) {
        if (t) {
            var i = t.getRawDataItem(e);
            if (null != i) {
                var r, a, o = t.getProvider().getSource().sourceFormat, s = t.getDimensionInfo(n);
                return s && (r = s.name, a = s.index), dm[o](i, e, a, r);
            }
        }
    }
    function Rs(t) {
        return new Fs(t);
    }
    function Fs(t) {
        t = t || {}, this._reset = t.reset, this._plan = t.plan, this._count = t.count, 
        this._onDirty = t.onDirty, this._dirty = !0, this.context;
    }
    function Ns(t, e, n, i, r, a) {
        ym.reset(n, i, r, a), t._callingProgress = e, t._callingProgress({
            start: n,
            end: i,
            count: i - n,
            next: ym.next
        }, t.context);
    }
    function Vs(t, e) {
        t._dueIndex = t._outputDueEnd = t._dueEnd = 0, t._settedOutputEnd = null;
        var n, i;
        !e && t._reset && (n = t._reset(t.context), n && n.progress && (i = n.forceFirstProgress, 
        n = n.progress), x(n) && !n.length && (n = null)), t._progress = n, t._modBy = t._modDataCount = null;
        var r = t._downstream;
        return r && r.dirty(), i;
    }
    function Hs(t) {
        var e = t.name;
        qi(t) || (t.name = Ws(t) || e);
    }
    function Ws(t) {
        var e = t.getRawData(), n = e.mapDimension("seriesName", !0), i = [];
        return d(n, function(t) {
            var n = e.getDimensionInfo(t);
            n.displayName && i.push(n.displayName);
        }), i.join(" ");
    }
    function Gs(t) {
        return t.model.getRawData().count();
    }
    function Xs(t) {
        var e = t.model;
        return e.setData(e.getRawData().cloneShallow()), qs;
    }
    function qs(t, e) {
        t.end > e.outputData.count() && e.model.getRawData().cloneShallow(e.outputData);
    }
    function js(t, e) {
        d(t.CHANGABLE_METHODS, function(n) {
            t.wrapMethod(n, _(Us, e));
        });
    }
    function Us(t) {
        var e = Ys(t);
        e && e.setOutputEnd(this.count());
    }
    function Ys(t) {
        var e = (t.ecModel || {}).scheduler, n = e && e.getPipeline(t.uid);
        if (n) {
            var i = n.currentTask;
            if (i) {
                var r = i.agentStubMap;
                r && (i = r.get(t.uid));
            }
            return i;
        }
    }
    function Zs() {
        this.group = new fd(), this.uid = eo("viewChart"), this.renderTask = Rs({
            plan: Qs,
            reset: Js
        }), this.renderTask.context = {
            view: this
        };
    }
    function $s(t, e, n) {
        if (t && (t.trigger(e, n), t.isGroup && !Ta(t))) for (var i = 0, r = t.childCount(); r > i; i++) $s(t.childAt(i), e, n);
    }
    function Ks(t, e, n) {
        var i = Ui(t, e), r = e && null != e.highlightKey ? Ca(e.highlightKey) : null;
        null != i ? d(Ni(i), function(e) {
            $s(t.getItemGraphicEl(e), n, r);
        }) : t.eachItemGraphicEl(function(t) {
            $s(t, n, r);
        });
    }
    function Qs(t) {
        return Tm(t.model);
    }
    function Js(t) {
        var e = t.model, n = t.ecModel, i = t.api, r = t.payload, a = e.pipelineContext.progressiveRender, o = t.view, s = r && Mm(r).updateMethod, l = a ? "incrementalPrepareRender" : s && o[s] ? s : "render";
        return "render" !== l && o[l](e, n, i, r), km[l];
    }
    function tl(t, e, n) {
        function i() {
            h = new Date().getTime(), c = null, t.apply(o, s || []);
        }
        var r, a, o, s, l, u = 0, h = 0, c = null;
        e = e || 0;
        var f = function() {
            r = new Date().getTime(), o = this, s = arguments;
            var t = l || e, f = l || n;
            l = null, a = r - (f ? u : h) - t, clearTimeout(c), f ? c = setTimeout(i, t) : a >= 0 ? i() : c = setTimeout(i, -a), 
            u = r;
        };
        return f.clear = function() {
            c && (clearTimeout(c), c = null);
        }, f.debounceNextCall = function(t) {
            l = t;
        }, f;
    }
    function el(t, e, n, i) {
        this.ecInstance = t, this.api = e, this.unfinished;
        var n = this._dataProcessorHandlers = n.slice(), i = this._visualHandlers = i.slice();
        this._allHandlers = n.concat(i), this._stageTaskMap = F();
    }
    function nl(t, e, n, i, r) {
        function a(t, e) {
            return t.setDirty && (!t.dirtyMap || t.dirtyMap.get(e.__pipeline.id));
        }
        r = r || {};
        var o;
        d(e, function(e) {
            if (!r.visualType || r.visualType === e.visualType) {
                var s = t._stageTaskMap.get(e.uid), l = s.seriesTaskMap, u = s.overallTask;
                if (u) {
                    var h, c = u.agentStubMap;
                    c.each(function(t) {
                        a(r, t) && (t.dirty(), h = !0);
                    }), h && u.dirty(), Em(u, i);
                    var f = t.getPerformArgs(u, r.block);
                    c.each(function(t) {
                        t.perform(f);
                    }), o |= u.perform(f);
                } else l && l.each(function(s) {
                    a(r, s) && s.dirty();
                    var l = t.getPerformArgs(s, r.block);
                    l.skip = !e.performRawSeries && n.isSeriesFiltered(s.context.model), Em(s, i), o |= s.perform(l);
                });
            }
        }), t.unfinished |= o;
    }
    function il(t, e, n, i, r) {
        function a(n) {
            var a = n.uid, s = o.get(a) || o.set(a, Rs({
                plan: ul,
                reset: hl,
                count: fl
            }));
            s.context = {
                model: n,
                ecModel: i,
                api: r,
                useClearVisual: e.isVisual && !e.isLayout,
                plan: e.plan,
                reset: e.reset,
                scheduler: t
            }, dl(t, n, s);
        }
        var o = n.seriesTaskMap || (n.seriesTaskMap = F()), s = e.seriesType, l = e.getTargetSeries;
        e.createOnAllSeries ? i.eachRawSeries(a) : s ? i.eachRawSeriesByType(s, a) : l && l(i, r).each(a);
        var u = t._pipelineMap;
        o.each(function(t, e) {
            u.get(e) || (t.dispose(), o.removeKey(e));
        });
    }
    function rl(t, e, n, i, r) {
        function a(e) {
            var n = e.uid, i = s.get(n);
            i || (i = s.set(n, Rs({
                reset: ol,
                onDirty: ll
            })), o.dirty()), i.context = {
                model: e,
                overallProgress: h,
                modifyOutputEnd: c
            }, i.agent = o, i.__block = h, dl(t, e, i);
        }
        var o = n.overallTask = n.overallTask || Rs({
            reset: al
        });
        o.context = {
            ecModel: i,
            api: r,
            overallReset: e.overallReset,
            scheduler: t
        };
        var s = o.agentStubMap = o.agentStubMap || F(), l = e.seriesType, u = e.getTargetSeries, h = !0, c = e.modifyOutputEnd;
        l ? i.eachRawSeriesByType(l, a) : u ? u(i, r).each(a) : (h = !1, d(i.getSeries(), a));
        var f = t._pipelineMap;
        s.each(function(t, e) {
            f.get(e) || (t.dispose(), o.dirty(), s.removeKey(e));
        });
    }
    function al(t) {
        t.overallReset(t.ecModel, t.api, t.payload);
    }
    function ol(t) {
        return t.overallProgress && sl;
    }
    function sl() {
        this.agent.dirty(), this.getDownstream().dirty();
    }
    function ll() {
        this.agent && this.agent.dirty();
    }
    function ul(t) {
        return t.plan && t.plan(t.model, t.ecModel, t.api, t.payload);
    }
    function hl(t) {
        t.useClearVisual && t.data.clearAllVisual();
        var e = t.resetDefines = Ni(t.reset(t.model, t.ecModel, t.api, t.payload));
        return e.length > 1 ? p(e, function(t, e) {
            return cl(e);
        }) : Bm;
    }
    function cl(t) {
        return function(e, n) {
            var i = n.data, r = n.resetDefines[t];
            if (r && r.dataEach) for (var a = e.start; a < e.end; a++) r.dataEach(i, a); else r && r.progress && r.progress(e, i);
        };
    }
    function fl(t) {
        return t.data.count();
    }
    function dl(t, e, n) {
        var i = e.uid, r = t._pipelineMap.get(i);
        !r.head && (r.head = n), r.tail && r.tail.pipe(n), r.tail = n, n.__idxInPipeline = r.count++, 
        n.__pipeline = r;
    }
    function pl(t) {
        zm = null;
        try {
            t(Rm, Fm);
        } catch (e) {}
        return zm;
    }
    function gl(t, e) {
        for (var n in e.prototype) t[n] = V;
    }
    function vl(t) {
        if (b(t)) {
            var e = new DOMParser();
            t = e.parseFromString(t, "text/xml");
        }
        for (9 === t.nodeType && (t = t.firstChild); "svg" !== t.nodeName.toLowerCase() || 1 !== t.nodeType; ) t = t.nextSibling;
        return t;
    }
    function ml() {
        this._defs = {}, this._root = null, this._isDefine = !1, this._isText = !1;
    }
    function yl(t, e) {
        for (var n = t.firstChild; n; ) {
            if (1 === n.nodeType) {
                var i = n.getAttribute("offset");
                i = i.indexOf("%") > 0 ? parseInt(i, 10) / 100 : i ? parseFloat(i) : 0;
                var r = n.getAttribute("stop-color") || "#000000";
                e.addColorStop(i, r);
            }
            n = n.nextSibling;
        }
    }
    function _l(t, e) {
        t && t.__inheritedStyle && (e.__inheritedStyle || (e.__inheritedStyle = {}), s(e.__inheritedStyle, t.__inheritedStyle));
    }
    function xl(t) {
        for (var e = E(t).split(jm), n = [], i = 0; i < e.length; i += 2) {
            var r = parseFloat(e[i]), a = parseFloat(e[i + 1]);
            n.push([ r, a ]);
        }
        return n;
    }
    function wl(t, e, n, i) {
        var r = e.__inheritedStyle || {}, a = "text" === e.type;
        if (1 === t.nodeType && (Sl(t, e), o(r, Ml(t)), !i)) for (var s in Zm) if (Zm.hasOwnProperty(s)) {
            var l = t.getAttribute(s);
            null != l && (r[Zm[s]] = l);
        }
        var u = a ? "textFill" : "fill", h = a ? "textStroke" : "stroke";
        e.style = e.style || new wd();
        var c = e.style;
        null != r.fill && c.set(u, bl(r.fill, n)), null != r.stroke && c.set(h, bl(r.stroke, n)), 
        d([ "lineWidth", "opacity", "fillOpacity", "strokeOpacity", "miterLimit", "fontSize" ], function(t) {
            var e = "lineWidth" === t && a ? "textStrokeWidth" : t;
            null != r[t] && c.set(e, parseFloat(r[t]));
        }), r.textBaseline && "auto" !== r.textBaseline || (r.textBaseline = "alphabetic"), 
        "alphabetic" === r.textBaseline && (r.textBaseline = "bottom"), "start" === r.textAlign && (r.textAlign = "left"), 
        "end" === r.textAlign && (r.textAlign = "right"), d([ "lineDashOffset", "lineCap", "lineJoin", "fontWeight", "fontFamily", "fontStyle", "textAlign", "textBaseline" ], function(t) {
            null != r[t] && c.set(t, r[t]);
        }), r.lineDash && (e.style.lineDash = E(r.lineDash).split(jm)), c[h] && "none" !== c[h] && (e[h] = !0), 
        e.__inheritedStyle = r;
    }
    function bl(t, e) {
        var n = e && t && t.match($m);
        if (n) {
            var i = E(n[1]), r = e[i];
            return r;
        }
        return t;
    }
    function Sl(t, e) {
        var n = t.getAttribute("transform");
        if (n) {
            n = n.replace(/,/g, " ");
            var i = null, r = [];
            n.replace(Km, function(t, e, n) {
                r.push(e, n);
            });
            for (var a = r.length - 1; a > 0; a -= 2) {
                var o = r[a], s = r[a - 1];
                switch (i = i || ke(), s) {
                  case "translate":
                    o = E(o).split(jm), Pe(i, i, [ parseFloat(o[0]), parseFloat(o[1] || 0) ]);
                    break;

                  case "scale":
                    o = E(o).split(jm), Le(i, i, [ parseFloat(o[0]), parseFloat(o[1] || o[0]) ]);
                    break;

                  case "rotate":
                    o = E(o).split(jm), Oe(i, i, parseFloat(o[0]));
                    break;

                  case "skew":
                    o = E(o).split(jm), console.warn("Skew transform is not supported yet");
                    break;

                  case "matrix":
                    var o = E(o).split(jm);
                    i[0] = parseFloat(o[0]), i[1] = parseFloat(o[1]), i[2] = parseFloat(o[2]), i[3] = parseFloat(o[3]), 
                    i[4] = parseFloat(o[4]), i[5] = parseFloat(o[5]);
                }
            }
            e.setLocalTransform(i);
        }
    }
    function Ml(t) {
        var e = t.getAttribute("style"), n = {};
        if (!e) return n;
        var i = {};
        Qm.lastIndex = 0;
        for (var r; null != (r = Qm.exec(e)); ) i[r[1]] = r[2];
        for (var a in Zm) Zm.hasOwnProperty(a) && null != i[a] && (n[Zm[a]] = i[a]);
        return n;
    }
    function Tl(t, e, n) {
        var i = e / t.width, r = n / t.height, a = Math.min(i, r), o = [ a, a ], s = [ -(t.x + t.width / 2) * a + e / 2, -(t.y + t.height / 2) * a + n / 2 ];
        return {
            scale: o,
            position: s
        };
    }
    function Cl(t, e) {
        return function(n, i, r) {
            (e || !this._disposed) && (n = n && n.toLowerCase(), wf.prototype[t].call(this, n, i, r));
        };
    }
    function kl() {
        wf.call(this);
    }
    function Il(t, e, n) {
        function r(t, e) {
            return t.__prio - e.__prio;
        }
        n = n || {}, "string" == typeof e && (e = Ey[e]), this.id, this.group, this._dom = t;
        var a = "canvas", o = this._zr = Ei(t, {
            renderer: n.renderer || a,
            devicePixelRatio: n.devicePixelRatio,
            width: n.width,
            height: n.height
        });
        this._throttledZrFlush = tl(y(o.flush, o), 17);
        var e = i(e);
        e && um(e, !0), this._theme = e, this._chartsViews = [], this._chartsMap = {}, this._componentsViews = [], 
        this._componentsMap = {}, this._coordSysMgr = new hs();
        var s = this._api = jl(this);
        Dn(Ly, r), Dn(Ay, r), this._scheduler = new el(this, s, Ay, Ly), wf.call(this, this._ecEventProcessor = new Ul()), 
        this._messageCenter = new kl(), this._initEvents(), this.resize = y(this.resize, this), 
        this._pendingActions = [], o.animation.on("frame", this._onframe, this), zl(o, this), 
        B(this);
    }
    function Dl(t, e, n) {
        if (!this._disposed) {
            var i, r = this._model, a = this._coordSysMgr.getCoordinateSystems();
            e = Zi(r, e);
            for (var o = 0; o < a.length; o++) {
                var s = a[o];
                if (s[t] && null != (i = s[t](r, e, n))) return i;
            }
        }
    }
    function Al(t) {
        var e = t._model, n = t._scheduler;
        n.restorePipelines(e), n.prepareStageTasks(), Rl(t, "component", e, n), Rl(t, "chart", e, n), 
        n.plan();
    }
    function Pl(t, e, n, i, r) {
        function a(i) {
            i && i.__alive && i[e] && i[e](i.__model, o, t._api, n);
        }
        var o = t._model;
        if (!i) return void iy(t._componentsViews.concat(t._chartsViews), a);
        var s = {};
        s[i + "Id"] = n[i + "Id"], s[i + "Index"] = n[i + "Index"], s[i + "Name"] = n[i + "Name"];
        var l = {
            mainType: i,
            query: s
        };
        r && (l.subType = r);
        var u = n.excludeSeriesId;
        null != u && (u = F(Ni(u))), o && o.eachComponent(l, function(e) {
            u && null != u.get(e.id) || a(t["series" === i ? "_chartsMap" : "_componentsMap"][e.__viewId]);
        }, t);
    }
    function Ol(t, e) {
        var n = t._chartsMap, i = t._scheduler;
        e.eachSeries(function(t) {
            i.updateStreamModes(t, n[t.__viewId]);
        });
    }
    function Ll(t, e) {
        var n = t.type, i = t.escapeConnect, r = Iy[n], a = r.actionInfo, l = (a.update || "update").split(":"), u = l.pop();
        l = null != l[0] && oy(l[0]), this[by] = !0;
        var h = [ t ], c = !1;
        t.batch && (c = !0, h = p(t.batch, function(e) {
            return e = s(o({}, e), t), e.batch = null, e;
        }));
        var f, d = [], g = "highlight" === n || "downplay" === n;
        iy(h, function(t) {
            f = r.action(t, this._model, this._api), f = f || o({}, t), f.type = a.event || f.type, 
            d.push(f), g ? Pl(this, u, t, "series") : l && Pl(this, u, t, l.main, l.sub);
        }, this), "none" === u || g || l || (this[Sy] ? (Al(this), Cy.update.call(this, t), 
        this[Sy] = !1) : Cy[u].call(this, t)), f = c ? {
            type: a.event || n,
            escapeConnect: i,
            batch: d
        } : d[0], this[by] = !1, !e && this._messageCenter.trigger(f.type, f);
    }
    function El(t) {
        for (var e = this._pendingActions; e.length; ) {
            var n = e.shift();
            Ll.call(this, n, t);
        }
    }
    function Bl(t) {
        !t && this.trigger("updated");
    }
    function zl(t, e) {
        t.on("rendered", function() {
            e.trigger("rendered"), !t.animation.isFinished() || e[Sy] || e._scheduler.unfinished || e._pendingActions.length || e.trigger("finished");
        });
    }
    function Rl(t, e, n, i) {
        function r(t) {
            var e = "_ec_" + t.id + "_" + t.type, r = s[e];
            if (!r) {
                var h = oy(t.type), c = a ? wm.getClass(h.main, h.sub) : Zs.getClass(h.sub);
                r = new c(), r.init(n, u), s[e] = r, o.push(r), l.add(r.group);
            }
            t.__viewId = r.__id = e, r.__alive = !0, r.__model = t, r.group.__ecComponentInfo = {
                mainType: t.mainType,
                index: t.componentIndex
            }, !a && i.prepareView(r, t, n, u);
        }
        for (var a = "component" === e, o = a ? t._componentsViews : t._chartsViews, s = a ? t._componentsMap : t._chartsMap, l = t._zr, u = t._api, h = 0; h < o.length; h++) o[h].__alive = !1;
        a ? n.eachComponent(function(t, e) {
            "series" !== t && r(e);
        }) : n.eachSeries(r);
        for (var h = 0; h < o.length; ) {
            var c = o[h];
            c.__alive ? h++ : (!a && c.renderTask.dispose(), l.remove(c.group), c.dispose(n, u), 
            o.splice(h, 1), delete s[c.__id], c.__id = c.group.__ecComponentInfo = null);
        }
    }
    function Fl(t) {
        t.clearColorPalette(), t.eachSeries(function(t) {
            t.clearColorPalette();
        });
    }
    function Nl(t, e, n, i) {
        Vl(t, e, n, i), iy(t._chartsViews, function(t) {
            t.__alive = !1;
        }), Hl(t, e, n, i), iy(t._chartsViews, function(t) {
            t.__alive || t.remove(e, n);
        });
    }
    function Vl(t, e, n, i, r) {
        iy(r || t._componentsViews, function(t) {
            var r = t.__model;
            t.render(r, e, n, i), ql(r, t);
        });
    }
    function Hl(t, e, n, i, r) {
        var a, o = t._scheduler;
        e.eachSeries(function(e) {
            var n = t._chartsMap[e.__viewId];
            n.__alive = !0;
            var s = n.renderTask;
            o.updatePayload(s, i), r && r.get(e.uid) && s.dirty(), a |= s.perform(o.getPerformArgs(s)), 
            n.group.silent = !!e.get("silent"), ql(e, n), Xl(e, n);
        }), o.unfinished |= a, Gl(t, e), Am(t._zr.dom, e);
    }
    function Wl(t, e) {
        iy(Oy, function(n) {
            n(t, e);
        });
    }
    function Gl(t, e) {
        var n = t._zr, i = n.storage, r = 0;
        i.traverse(function() {
            r++;
        }), r > e.get("hoverLayerThreshold") && !Qc.node && e.eachSeries(function(e) {
            if (!e.preventUsingHoverLayer) {
                var n = t._chartsMap[e.__viewId];
                n.__alive && n.group.traverse(function(t) {
                    t.useHoverLayer = !0;
                });
            }
        });
    }
    function Xl(t, e) {
        var n = t.get("blendMode") || null;
        e.group.traverse(function(t) {
            t.isGroup || t.style.blend !== n && t.setStyle("blend", n), t.eachPendingDisplayable && t.eachPendingDisplayable(function(t) {
                t.setStyle("blend", n);
            });
        });
    }
    function ql(t, e) {
        var n = t.get("z"), i = t.get("zlevel");
        e.group.traverse(function(t) {
            "group" !== t.type && (null != n && (t.z = n), null != i && (t.zlevel = i));
        });
    }
    function jl(t) {
        var e = t._coordSysMgr;
        return o(new us(t), {
            getCoordinateSystems: y(e.getCoordinateSystems, e),
            getComponentByElement: function(e) {
                for (;e; ) {
                    var n = e.__ecComponentInfo;
                    if (null != n) return t._model.getComponent(n.mainType, n.index);
                    e = e.parent;
                }
            }
        });
    }
    function Ul() {
        this.eventInfo;
    }
    function Yl(t) {
        function e(t, e) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n];
                i[a] = e;
            }
        }
        var n = 0, i = 1, r = 2, a = "__connectUpdateStatus";
        iy(Dy, function(o, s) {
            t._messageCenter.on(s, function(o) {
                if (Ry[t.group] && t[a] !== n) {
                    if (o && o.escapeConnect) return;
                    var s = t.makeActionFromEvent(o), l = [];
                    iy(zy, function(e) {
                        e !== t && e.group === t.group && l.push(e);
                    }), e(l, n), iy(l, function(t) {
                        t[a] !== i && t.dispatchAction(s);
                    }), e(l, r);
                }
            });
        });
    }
    function Zl(t, e, n) {
        var i = Jl(t);
        if (i) return i;
        var r = new Il(t, e, n);
        return r.id = "ec_" + Fy++, zy[r.id] = r, Ki(t, Vy, r.id), Yl(r), r;
    }
    function $l(t) {
        if (x(t)) {
            var e = t;
            t = null, iy(e, function(e) {
                null != e.group && (t = e.group);
            }), t = t || "g_" + Ny++, iy(e, function(e) {
                e.group = t;
            });
        }
        return Ry[t] = !0, t;
    }
    function Kl(t) {
        Ry[t] = !1;
    }
    function Ql(t) {
        "string" == typeof t ? t = zy[t] : t instanceof Il || (t = Jl(t)), t instanceof Il && !t.isDisposed() && t.dispose();
    }
    function Jl(t) {
        return zy[Qi(t, Vy)];
    }
    function tu(t) {
        return zy[t];
    }
    function eu(t, e) {
        Ey[t] = e;
    }
    function nu(t) {
        Py.push(t);
    }
    function iu(t, e) {
        hu(Ay, t, e, hy);
    }
    function ru(t) {
        Oy.push(t);
    }
    function au(t, e, n) {
        "function" == typeof e && (n = e, e = "");
        var i = ay(t) ? t.type : [ t, t = {
            event: e
        } ][0];
        t.event = (t.event || i).toLowerCase(), e = t.event, ny(My.test(i) && My.test(e)), 
        Iy[i] || (Iy[i] = {
            action: n,
            actionInfo: t
        }), Dy[e] = i;
    }
    function ou(t, e) {
        hs.register(t, e);
    }
    function su(t) {
        var e = hs.get(t);
        return e ? e.getDimensionsInfo ? e.getDimensionsInfo() : e.dimensions.slice() : void 0;
    }
    function lu(t, e) {
        hu(Ly, t, e, py, "layout");
    }
    function uu(t, e) {
        hu(Ly, t, e, my, "visual");
    }
    function hu(t, e, n, i, r) {
        (ry(e) || ay(e)) && (n = e, e = i);
        var a = el.wrapStageHandler(n, r);
        return a.__prio = e, a.__raw = n, t.push(a), a;
    }
    function cu(t, e) {
        By[t] = e;
    }
    function fu(t) {
        return Lv.extend(t);
    }
    function du(t) {
        return wm.extend(t);
    }
    function pu(t) {
        return xm.extend(t);
    }
    function gu(t) {
        return Zs.extend(t);
    }
    function vu(t) {
        n("createCanvas", t);
    }
    function mu(t, e, n) {
        ty.registerMap(t, e, n);
    }
    function yu(t) {
        var e = ty.retrieveMap(t);
        return e && e[0] && {
            geoJson: e[0].geoJSON,
            specialAreas: e[0].specialAreas
        };
    }
    function _u(t) {
        return t;
    }
    function xu(t, e, n, i, r) {
        this._old = t, this._new = e, this._oldKeyGetter = n || _u, this._newKeyGetter = i || _u, 
        this.context = r;
    }
    function wu(t, e, n, i, r) {
        for (var a = 0; a < t.length; a++) {
            var o = "_ec_" + r[i](t[a], a), s = e[o];
            null == s ? (n.push(o), e[o] = a) : (s.length || (e[o] = s = [ s ]), s.push(a));
        }
    }
    function bu(t) {
        var e = {}, n = e.encode = {}, i = F(), r = [], a = [], o = e.userOutput = {
            dimensionNames: t.dimensions.slice(),
            encode: {}
        };
        d(t.dimensions, function(e) {
            var s = t.getDimensionInfo(e), l = s.coordDim;
            if (l) {
                var u = s.coordDimIndex;
                Su(n, l)[u] = e, s.isExtraCoord || (i.set(l, 1), Tu(s.type) && (r[0] = e), Su(o.encode, l)[u] = s.index), 
                s.defaultTooltip && a.push(e);
            }
            Gy.each(function(t, e) {
                var i = Su(n, e), r = s.otherDims[e];
                null != r && r !== !1 && (i[r] = s.name);
            });
        });
        var s = [], l = {};
        i.each(function(t, e) {
            var i = n[e];
            l[e] = i[0], s = s.concat(i);
        }), e.dataDimsOnCoord = s, e.encodeFirstDimNotExtra = l;
        var u = n.label;
        u && u.length && (r = u.slice());
        var h = n.tooltip;
        return h && h.length ? a = h.slice() : a.length || (a = r.slice()), n.defaultedLabel = r, 
        n.defaultedTooltip = a, e;
    }
    function Su(t, e) {
        return t.hasOwnProperty(e) || (t[e] = []), t[e];
    }
    function Mu(t) {
        return "category" === t ? "ordinal" : "time" === t ? "time" : "float";
    }
    function Tu(t) {
        return !("ordinal" === t || "time" === t);
    }
    function Cu(t) {
        return t._rawCount > 65535 ? Zy : Ky;
    }
    function ku(t) {
        var e = t.constructor;
        return e === Array ? t.slice() : new e(t);
    }
    function Iu(t, e) {
        d(Qy.concat(e.__wrappedMethods || []), function(n) {
            e.hasOwnProperty(n) && (t[n] = e[n]);
        }), t.__wrappedMethods = e.__wrappedMethods, d(Jy, function(n) {
            t[n] = i(e[n]);
        }), t._calculationInfo = o(e._calculationInfo);
    }
    function Du(t, e, n, i, r) {
        var a = Yy[e.type], o = i - 1, s = e.name, l = t[s][o];
        if (l && l.length < n) {
            for (var u = new a(Math.min(r - o * n, n)), h = 0; h < l.length; h++) u[h] = l[h];
            t[s][o] = u;
        }
        for (var c = i * n; r > c; c += n) t[s].push(new a(Math.min(r - c, n)));
    }
    function Au(t) {
        var e = t._invertedIndicesMap;
        d(e, function(n, i) {
            var r = t._dimensionInfos[i], a = r.ordinalMeta;
            if (a) {
                n = e[i] = new $y(a.categories.length);
                for (var o = 0; o < n.length; o++) n[o] = jy;
                for (var o = 0; o < t._count; o++) n[t.get(i, o)] = o;
            }
        });
    }
    function Pu(t, e, n) {
        var i;
        if (null != e) {
            var r = t._chunkSize, a = Math.floor(n / r), o = n % r, s = t.dimensions[e], l = t._storage[s][a];
            if (l) {
                i = l[o];
                var u = t._dimensionInfos[s].ordinalMeta;
                u && u.categories.length && (i = u.categories[i]);
            }
        }
        return i;
    }
    function Ou(t) {
        return t;
    }
    function Lu(t) {
        return t < this._count && t >= 0 ? this._indices[t] : -1;
    }
    function Eu(t, e) {
        var n = t._idList[e];
        return null == n && (n = Pu(t, t._idDimIdx, e)), null == n && (n = Uy + e), n;
    }
    function Bu(t) {
        return x(t) || (t = [ t ]), t;
    }
    function zu(t, e) {
        var n = t.dimensions, i = new t_(p(n, t.getDimensionInfo, t), t.hostModel);
        Iu(i, t);
        for (var r = i._storage = {}, a = t._storage, o = 0; o < n.length; o++) {
            var s = n[o];
            a[s] && (u(e, s) >= 0 ? (r[s] = Ru(a[s]), i._rawExtent[s] = Fu(), i._extent[s] = null) : r[s] = a[s]);
        }
        return i;
    }
    function Ru(t) {
        for (var e = new Array(t.length), n = 0; n < t.length; n++) e[n] = ku(t[n]);
        return e;
    }
    function Fu() {
        return [ 1 / 0, -1 / 0 ];
    }
    function Nu(t, e, n) {
        function r(t, e, n) {
            null != Gy.get(e) ? t.otherDims[e] = n : (t.coordDim = e, t.coordDimIndex = n, h.set(e, !0));
        }
        Go.isInstance(e) || (e = Go.seriesDataToSource(e)), n = n || {}, t = (t || []).slice();
        for (var a = (n.dimsDef || []).slice(), l = F(n.encodeDef), u = F(), h = F(), c = [], f = Vu(e, t, a, n.dimCount), p = 0; f > p; p++) {
            var g = a[p] = o({}, S(a[p]) ? a[p] : {
                name: a[p]
            }), v = g.name, m = c[p] = {
                otherDims: {}
            };
            null != v && null == u.get(v) && (m.name = m.displayName = v, u.set(v, p)), null != g.type && (m.type = g.type), 
            null != g.displayName && (m.displayName = g.displayName);
        }
        l.each(function(t, e) {
            if (t = Ni(t).slice(), 1 === t.length && !b(t[0]) && t[0] < 0) return void l.set(e, !1);
            var n = l.set(e, []);
            d(t, function(t, i) {
                b(t) && (t = u.get(t)), null != t && f > t && (n[i] = t, r(c[t], e, i));
            });
        });
        var y = 0;
        d(t, function(t) {
            var e, t, n, a;
            if (b(t)) e = t, t = {}; else {
                e = t.name;
                var o = t.ordinalMeta;
                t.ordinalMeta = null, t = i(t), t.ordinalMeta = o, n = t.dimsDef, a = t.otherDims, 
                t.name = t.coordDim = t.coordDimIndex = t.dimsDef = t.otherDims = null;
            }
            var u = l.get(e);
            if (u !== !1) {
                var u = Ni(u);
                if (!u.length) for (var h = 0; h < (n && n.length || 1); h++) {
                    for (;y < c.length && null != c[y].coordDim; ) y++;
                    y < c.length && u.push(y++);
                }
                d(u, function(i, o) {
                    var l = c[i];
                    if (r(s(l, t), e, o), null == l.name && n) {
                        var u = n[o];
                        !S(u) && (u = {
                            name: u
                        }), l.name = l.displayName = u.name, l.defaultTooltip = u.defaultTooltip;
                    }
                    a && s(l.otherDims, a);
                });
            }
        });
        var _ = n.generateCoord, x = n.generateCoordCount, w = null != x;
        x = _ ? x || 1 : 0;
        for (var M = _ || "value", T = 0; f > T; T++) {
            var m = c[T] = c[T] || {}, C = m.coordDim;
            null == C && (m.coordDim = Hu(M, h, w), m.coordDimIndex = 0, (!_ || 0 >= x) && (m.isExtraCoord = !0), 
            x--), null == m.name && (m.name = Hu(m.coordDim, u)), null == m.type && ts(e, T, m.name) && (m.type = "ordinal");
        }
        return c;
    }
    function Vu(t, e, n, i) {
        var r = Math.max(t.dimensionsDetectCount || 1, e.length, n.length, i || 0);
        return d(e, function(t) {
            var e = t.dimsDef;
            e && (r = Math.max(r, e.length));
        }), r;
    }
    function Hu(t, e, n) {
        if (n || null != e.get(t)) {
            for (var i = 0; null != e.get(t + i); ) i++;
            t += i;
        }
        return e.set(t, !0), t;
    }
    function Wu(t, e, n) {
        n = n || {};
        var i, r, a, o, s = n.byIndex, l = n.stackedCoordDimension, u = !(!t || !t.get("stack"));
        if (d(e, function(t, n) {
            b(t) && (e[n] = t = {
                name: t
            }), u && !t.isExtraCoord && (s || i || !t.ordinalMeta || (i = t), r || "ordinal" === t.type || "time" === t.type || l && l !== t.coordDim || (r = t));
        }), !r || s || i || (s = !0), r) {
            a = "__\0ecstackresult", o = "__\0ecstackedover", i && (i.createInvertedIndices = !0);
            var h = r.coordDim, c = r.type, f = 0;
            d(e, function(t) {
                t.coordDim === h && f++;
            }), e.push({
                name: a,
                coordDim: h,
                coordDimIndex: f,
                type: c,
                isExtraCoord: !0,
                isCalculationCoord: !0
            }), f++, e.push({
                name: o,
                coordDim: o,
                coordDimIndex: f,
                type: c,
                isExtraCoord: !0,
                isCalculationCoord: !0
            });
        }
        return {
            stackedDimension: r && r.name,
            stackedByDimension: i && i.name,
            isStackedByIndex: s,
            stackedOverDimension: o,
            stackResultDimension: a
        };
    }
    function Gu(t, e) {
        return !!e && e === t.getCalculationInfo("stackedDimension");
    }
    function Xu(t, e) {
        return Gu(t, e) ? t.getCalculationInfo("stackResultDimension") : e;
    }
    function qu(t, e, n) {
        n = n || {}, Go.isInstance(t) || (t = Go.seriesDataToSource(t));
        var i, r = e.get("coordinateSystem"), a = hs.get(r), o = Ho(e);
        o && (i = p(o.coordSysDims, function(t) {
            var e = {
                name: t
            }, n = o.axisMap.get(t);
            if (n) {
                var i = n.get("type");
                e.type = Mu(i);
            }
            return e;
        })), i || (i = a && (a.getDimensionsInfo ? a.getDimensionsInfo() : a.dimensions.slice()) || [ "x", "y" ]);
        var s, l, u = i_(t, {
            coordDimensions: i,
            generateCoord: n.generateCoord
        });
        o && d(u, function(t, e) {
            var n = t.coordDim, i = o.categoryAxisMap.get(n);
            i && (null == s && (s = e), t.ordinalMeta = i.getOrdinalMeta()), null != t.otherDims.itemName && (l = !0);
        }), l || null == s || (u[s].otherDims.itemName = 0);
        var h = Wu(e, u), c = new t_(u, e);
        c.setCalculationInfo(h);
        var f = null != s && ju(t) ? function(t, e, n, i) {
            return i === s ? n : this.defaultDimValueGetter(t, e, n, i);
        } : null;
        return c.hasItemOption = !1, c.initData(t, null, f), c;
    }
    function ju(t) {
        if (t.sourceFormat === Nv) {
            var e = Uu(t.data || []);
            return null != e && !x(Hi(e));
        }
    }
    function Uu(t) {
        for (var e = 0; e < t.length && null == t[e]; ) e++;
        return t[e];
    }
    function Yu(t) {
        this._setting = t || {}, this._extent = [ 1 / 0, -1 / 0 ], this._interval = 0, this.init && this.init.apply(this, arguments);
    }
    function Zu(t) {
        this.categories = t.categories || [], this._needCollect = t.needCollect, this._deduplication = t.deduplication, 
        this._map;
    }
    function $u(t) {
        return t._map || (t._map = F(t.categories));
    }
    function Ku(t) {
        return S(t) && null != t.value ? t.value : t + "";
    }
    function Qu(t, e, n, i) {
        var r = {}, a = t[1] - t[0], o = r.interval = _o(a / e, !0);
        null != n && n > o && (o = r.interval = n), null != i && o > i && (o = r.interval = i);
        var s = r.intervalPrecision = Ju(o), l = r.niceTickExtent = [ s_(Math.ceil(t[0] / o) * o, s), s_(Math.floor(t[1] / o) * o, s) ];
        return eh(l, t), r;
    }
    function Ju(t) {
        return ho(t) + 2;
    }
    function th(t, e, n) {
        t[e] = Math.max(Math.min(t[e], n[1]), n[0]);
    }
    function eh(t, e) {
        !isFinite(t[0]) && (t[0] = e[0]), !isFinite(t[1]) && (t[1] = e[1]), th(t, 0, e), 
        th(t, 1, e), t[0] > t[1] && (t[0] = t[1]);
    }
    function nh(t, e, n, i) {
        var r = [];
        if (!t) return r;
        var a = 1e4;
        e[0] < n[0] && r.push(e[0]);
        for (var o = n[0]; o <= n[1] && (r.push(o), o = s_(o + t, i), o !== r[r.length - 1]); ) if (r.length > a) return [];
        return e[1] > (r.length ? r[r.length - 1] : n[1]) && r.push(e[1]), r;
    }
    function ih(t) {
        return t.get("stack") || h_ + t.seriesIndex;
    }
    function rh(t) {
        return t.dim + t.index;
    }
    function ah(t, e) {
        var n = [];
        return e.eachSeriesByType(t, function(t) {
            uh(t) && !hh(t) && n.push(t);
        }), n;
    }
    function oh(t) {
        var e = [];
        return d(t, function(t) {
            var n = t.getData(), i = t.coordinateSystem, r = i.getBaseAxis(), a = r.getExtent(), o = "category" === r.type ? r.getBandWidth() : Math.abs(a[1] - a[0]) / n.count(), s = oo(t.get("barWidth"), o), l = oo(t.get("barMaxWidth"), o), u = t.get("barGap"), h = t.get("barCategoryGap");
            e.push({
                bandWidth: o,
                barWidth: s,
                barMaxWidth: l,
                barGap: u,
                barCategoryGap: h,
                axisKey: rh(r),
                stackId: ih(t)
            });
        }), sh(e);
    }
    function sh(t) {
        var e = {};
        d(t, function(t) {
            var n = t.axisKey, i = t.bandWidth, r = e[n] || {
                bandWidth: i,
                remainedWidth: i,
                autoWidthCount: 0,
                categoryGap: "20%",
                gap: "30%",
                stacks: {}
            }, a = r.stacks;
            e[n] = r;
            var o = t.stackId;
            a[o] || r.autoWidthCount++, a[o] = a[o] || {
                width: 0,
                maxWidth: 0
            };
            var s = t.barWidth;
            s && !a[o].width && (a[o].width = s, s = Math.min(r.remainedWidth, s), r.remainedWidth -= s);
            var l = t.barMaxWidth;
            l && (a[o].maxWidth = l);
            var u = t.barGap;
            null != u && (r.gap = u);
            var h = t.barCategoryGap;
            null != h && (r.categoryGap = h);
        });
        var n = {};
        return d(e, function(t, e) {
            n[e] = {};
            var i = t.stacks, r = t.bandWidth, a = oo(t.categoryGap, r), o = oo(t.gap, 1), s = t.remainedWidth, l = t.autoWidthCount, u = (s - a) / (l + (l - 1) * o);
            u = Math.max(u, 0), d(i, function(t) {
                var e = t.maxWidth;
                e && u > e && (e = Math.min(e, s), t.width && (e = Math.min(e, t.width)), s -= e, 
                t.width = e, l--);
            }), u = (s - a) / (l + (l - 1) * o), u = Math.max(u, 0);
            var h, c = 0;
            d(i, function(t) {
                t.width || (t.width = u), h = t, c += t.width * (1 + o);
            }), h && (c -= h.width * o);
            var f = -c / 2;
            d(i, function(t, i) {
                n[e][i] = n[e][i] || {
                    bandWidth: r,
                    offset: f,
                    width: t.width
                }, f += t.width * (1 + o);
            });
        }), n;
    }
    function lh(t, e, n) {
        if (t && e) {
            var i = t[rh(e)];
            return null != i && null != n && (i = i[ih(n)]), i;
        }
    }
    function uh(t) {
        return t.coordinateSystem && "cartesian2d" === t.coordinateSystem.type;
    }
    function hh(t) {
        return t.pipelineContext && t.pipelineContext.large;
    }
    function ch(t, e) {
        return e.toGlobalCoord(e.dataToCoord(0));
    }
    function fh(t, e) {
        return C_(t, T_(e));
    }
    function dh(t, e) {
        var n, i, r, a = t.type, o = e.getMin(), s = e.getMax(), l = null != o, u = null != s, h = t.getExtent();
        "ordinal" === a ? n = e.getCategories().length : (i = e.get("boundaryGap"), x(i) || (i = [ i || 0, i || 0 ]), 
        "boolean" == typeof i[0] && (i = [ 0, 0 ]), i[0] = oo(i[0], 1), i[1] = oo(i[1], 1), 
        r = h[1] - h[0] || Math.abs(h[0])), null == o && (o = "ordinal" === a ? n ? 0 : 0 / 0 : h[0] - i[0] * r), 
        null == s && (s = "ordinal" === a ? n ? n - 1 : 0 / 0 : h[1] + i[1] * r), "dataMin" === o ? o = h[0] : "function" == typeof o && (o = o({
            min: h[0],
            max: h[1]
        })), "dataMax" === s ? s = h[1] : "function" == typeof s && (s = s({
            min: h[0],
            max: h[1]
        })), (null == o || !isFinite(o)) && (o = 0 / 0), (null == s || !isFinite(s)) && (s = 0 / 0), 
        t.setBlank(k(o) || k(s) || "ordinal" === a && !t.getOrdinalMeta().categories.length), 
        e.getNeedCrossZero() && (o > 0 && s > 0 && !l && (o = 0), 0 > o && 0 > s && !u && (s = 0));
        var c = e.ecModel;
        if (c && "time" === a) {
            var f, p = ah("bar", c);
            if (d(p, function(t) {
                f |= t.getBaseAxis() === e.axis;
            }), f) {
                var g = oh(p), v = ph(o, s, e, g);
                o = v.min, s = v.max;
            }
        }
        return [ o, s ];
    }
    function ph(t, e, n, i) {
        var r = n.axis.getExtent(), a = r[1] - r[0], o = lh(i, n.axis);
        if (void 0 === o) return {
            min: t,
            max: e
        };
        var s = 1 / 0;
        d(o, function(t) {
            s = Math.min(t.offset, s);
        });
        var l = -1 / 0;
        d(o, function(t) {
            l = Math.max(t.offset + t.width, l);
        }), s = Math.abs(s), l = Math.abs(l);
        var u = s + l, h = e - t, c = 1 - (s + l) / a, f = h / c - h;
        return e += f * (l / u), t -= f * (s / u), {
            min: t,
            max: e
        };
    }
    function gh(t, e) {
        var n = dh(t, e), i = null != e.getMin(), r = null != e.getMax(), a = e.get("splitNumber");
        "log" === t.type && (t.base = e.get("logBase"));
        var o = t.type;
        t.setExtent(n[0], n[1]), t.niceExtent({
            splitNumber: a,
            fixMin: i,
            fixMax: r,
            minInterval: "interval" === o || "time" === o ? e.get("minInterval") : null,
            maxInterval: "interval" === o || "time" === o ? e.get("maxInterval") : null
        });
        var s = e.get("interval");
        null != s && t.setInterval && t.setInterval(s);
    }
    function vh(t, e) {
        if (e = e || t.get("type")) switch (e) {
          case "category":
            return new o_(t.getOrdinalMeta ? t.getOrdinalMeta() : t.getCategories(), [ 1 / 0, -1 / 0 ]);

          case "value":
            return new u_();

          default:
            return (Yu.getClass(e) || u_).create(t);
        }
    }
    function mh(t) {
        var e = t.scale.getExtent(), n = e[0], i = e[1];
        return !(n > 0 && i > 0 || 0 > n && 0 > i);
    }
    function yh(t) {
        var e = t.getLabelModel().get("formatter"), n = "category" === t.type ? t.scale.getExtent()[0] : null;
        return "string" == typeof e ? e = function(e) {
            return function(n) {
                return n = t.scale.getLabel(n), e.replace("{value}", null != n ? n : "");
            };
        }(e) : "function" == typeof e ? function(i, r) {
            return null != n && (r = i - n), e(_h(t, i), r);
        } : function(e) {
            return t.scale.getLabel(e);
        };
    }
    function _h(t, e) {
        return "category" === t.type ? t.scale.getLabel(e) : e;
    }
    function xh(t) {
        var e = t.model, n = t.scale;
        if (e.get("axisLabel.show") && !n.isBlank()) {
            var i, r, a = "category" === t.type, o = n.getExtent();
            a ? r = n.count() : (i = n.getTicks(), r = i.length);
            var s, l = t.getLabelModel(), u = yh(t), h = 1;
            r > 40 && (h = Math.ceil(r / 40));
            for (var c = 0; r > c; c += h) {
                var f = i ? i[c] : o[0] + c, d = u(f), p = l.getTextRect(d), g = wh(p, l.get("rotate") || 0);
                s ? s.union(g) : s = g;
            }
            return s;
        }
    }
    function wh(t, e) {
        var n = e * Math.PI / 180, i = t.plain(), r = i.width, a = i.height, o = r * Math.cos(n) + a * Math.sin(n), s = r * Math.sin(n) + a * Math.cos(n), l = new wn(i.x, i.y, o, s);
        return l;
    }
    function bh(t) {
        var e = t.get("interval");
        return null == e ? "auto" : e;
    }
    function Sh(t) {
        return "category" === t.type && 0 === bh(t.getLabelModel());
    }
    function Mh(t, e) {
        if ("image" !== this.type) {
            var n = this.style, i = this.shape;
            i && "line" === i.symbolType ? n.stroke = t : this.__isEmptyBrush ? (n.stroke = t, 
            n.fill = e || "#fff") : (n.fill && (n.fill = t), n.stroke && (n.stroke = t)), this.dirty(!1);
        }
    }
    function Th(t, e, n, i, r, a, o) {
        var s = 0 === t.indexOf("empty");
        s && (t = t.substr(5, 1).toLowerCase() + t.substr(6));
        var l;
        return l = 0 === t.indexOf("image://") ? aa(t.slice(8), new wn(e, n, i, r), o ? "center" : "cover") : 0 === t.indexOf("path://") ? ra(t.slice(7), {}, new wn(e, n, i, r), o ? "center" : "cover") : new V_({
            shape: {
                symbolType: t,
                x: e,
                y: n,
                width: i,
                height: r
            }
        }), l.__isEmptyBrush = s, l.setColor = Mh, l.setColor(a), l;
    }
    function Ch(t) {
        return qu(t.getSource(), t);
    }
    function kh(t, e) {
        var n = e;
        Qa.isInstance(e) || (n = new Qa(e), c(n, O_));
        var i = vh(n);
        return i.setExtent(t[0], t[1]), gh(i, n), i;
    }
    function Ih(t) {
        c(t, O_);
    }
    function Dh(t, e) {
        return Math.abs(t - e) < G_;
    }
    function Ah(t, e, n) {
        var i = 0, r = t[0];
        if (!r) return !1;
        for (var a = 1; a < t.length; a++) {
            var o = t[a];
            i += Pr(r[0], r[1], o[0], o[1], e, n), r = o;
        }
        var s = t[0];
        return Dh(r[0], s[0]) && Dh(r[1], s[1]) || (i += Pr(r[0], r[1], s[0], s[1], e, n)), 
        0 !== i;
    }
    function Ph(t, e, n) {
        if (this.name = t, this.geometries = e, n) n = [ n[0], n[1] ]; else {
            var i = this.getBoundingRect();
            n = [ i.x + i.width / 2, i.y + i.height / 2 ];
        }
        this.center = n;
    }
    function Oh(t) {
        if (!t.UTF8Encoding) return t;
        var e = t.UTF8Scale;
        null == e && (e = 1024);
        for (var n = t.features, i = 0; i < n.length; i++) for (var r = n[i], a = r.geometry, o = a.coordinates, s = a.encodeOffsets, l = 0; l < o.length; l++) {
            var u = o[l];
            if ("Polygon" === a.type) o[l] = Lh(u, s[l], e); else if ("MultiPolygon" === a.type) for (var h = 0; h < u.length; h++) {
                var c = u[h];
                u[h] = Lh(c, s[l][h], e);
            }
        }
        return t.UTF8Encoding = !1, t;
    }
    function Lh(t, e, n) {
        for (var i = [], r = e[0], a = e[1], o = 0; o < t.length; o += 2) {
            var s = t.charCodeAt(o) - 64, l = t.charCodeAt(o + 1) - 64;
            s = s >> 1 ^ -(1 & s), l = l >> 1 ^ -(1 & l), s += r, l += a, r = s, a = l, i.push([ s / n, l / n ]);
        }
        return i;
    }
    function Eh(t) {
        return "category" === t.type ? zh(t) : Nh(t);
    }
    function Bh(t, e) {
        return "category" === t.type ? Fh(t, e) : {
            ticks: t.scale.getTicks()
        };
    }
    function zh(t) {
        var e = t.getLabelModel(), n = Rh(t, e);
        return !e.get("show") || t.scale.isBlank() ? {
            labels: [],
            labelCategoryInterval: n.labelCategoryInterval
        } : n;
    }
    function Rh(t, e) {
        var n = Vh(t, "labels"), i = bh(e), r = Hh(n, i);
        if (r) return r;
        var a, o;
        return w(i) ? a = Uh(t, i) : (o = "auto" === i ? Gh(t) : i, a = jh(t, o)), Wh(n, i, {
            labels: a,
            labelCategoryInterval: o
        });
    }
    function Fh(t, e) {
        var n = Vh(t, "ticks"), i = bh(e), r = Hh(n, i);
        if (r) return r;
        var a, o;
        if ((!e.get("show") || t.scale.isBlank()) && (a = []), w(i)) a = Uh(t, i, !0); else if ("auto" === i) {
            var s = Rh(t, t.getLabelModel());
            o = s.labelCategoryInterval, a = p(s.labels, function(t) {
                return t.tickValue;
            });
        } else o = i, a = jh(t, o, !0);
        return Wh(n, i, {
            ticks: a,
            tickCategoryInterval: o
        });
    }
    function Nh(t) {
        var e = t.scale.getTicks(), n = yh(t);
        return {
            labels: p(e, function(e, i) {
                return {
                    formattedLabel: n(e, i),
                    rawLabel: t.scale.getLabel(e),
                    tickValue: e
                };
            })
        };
    }
    function Vh(t, e) {
        return q_(t)[e] || (q_(t)[e] = []);
    }
    function Hh(t, e) {
        for (var n = 0; n < t.length; n++) if (t[n].key === e) return t[n].value;
    }
    function Wh(t, e, n) {
        return t.push({
            key: e,
            value: n
        }), n;
    }
    function Gh(t) {
        var e = q_(t).autoInterval;
        return null != e ? e : q_(t).autoInterval = t.calculateCategoryInterval();
    }
    function Xh(t) {
        var e = qh(t), n = yh(t), i = (e.axisRotate - e.labelRotate) / 180 * Math.PI, r = t.scale, a = r.getExtent(), o = r.count();
        if (a[1] - a[0] < 1) return 0;
        var s = 1;
        o > 40 && (s = Math.max(1, Math.floor(o / 40)));
        for (var l = a[0], u = t.dataToCoord(l + 1) - t.dataToCoord(l), h = Math.abs(u * Math.cos(i)), c = Math.abs(u * Math.sin(i)), f = 0, d = 0; l <= a[1]; l += s) {
            var p = 0, g = 0, v = Vn(n(l), e.font, "center", "top");
            p = 1.3 * v.width, g = 1.3 * v.height, f = Math.max(f, p, 7), d = Math.max(d, g, 7);
        }
        var m = f / h, y = d / c;
        isNaN(m) && (m = 1 / 0), isNaN(y) && (y = 1 / 0);
        var _ = Math.max(0, Math.floor(Math.min(m, y))), x = q_(t.model), w = x.lastAutoInterval, b = x.lastTickCount;
        return null != w && null != b && Math.abs(w - _) <= 1 && Math.abs(b - o) <= 1 && w > _ ? _ = w : (x.lastTickCount = o, 
        x.lastAutoInterval = _), _;
    }
    function qh(t) {
        var e = t.getLabelModel();
        return {
            axisRotate: t.getRotate ? t.getRotate() : t.isHorizontal && !t.isHorizontal() ? 90 : 0,
            labelRotate: e.get("rotate") || 0,
            font: e.getFont()
        };
    }
    function jh(t, e, n) {
        function i(t) {
            l.push(n ? t : {
                formattedLabel: r(t),
                rawLabel: a.getLabel(t),
                tickValue: t
            });
        }
        var r = yh(t), a = t.scale, o = a.getExtent(), s = t.getLabelModel(), l = [], u = Math.max((e || 0) + 1, 1), h = o[0], c = a.count();
        0 !== h && u > 1 && c / u > 2 && (h = Math.round(Math.ceil(h / u) * u));
        var f = Sh(t), d = s.get("showMinLabel") || f, p = s.get("showMaxLabel") || f;
        d && h !== o[0] && i(o[0]);
        for (var g = h; g <= o[1]; g += u) i(g);
        return p && g - u !== o[1] && i(o[1]), l;
    }
    function Uh(t, e, n) {
        var i = t.scale, r = yh(t), a = [];
        return d(i.getTicks(), function(t) {
            var o = i.getLabel(t);
            e(t, o) && a.push(n ? t : {
                formattedLabel: r(t),
                rawLabel: o,
                tickValue: t
            });
        }), a;
    }
    function Yh(t, e) {
        var n = t[1] - t[0], i = e, r = n / i / 2;
        t[0] += r, t[1] -= r;
    }
    function Zh(t, e, n, i, r) {
        function a(t, e) {
            return h ? t > e : e > t;
        }
        var o = e.length;
        if (t.onBand && !i && o) {
            var s, l = t.getExtent();
            if (1 === o) e[0].coord = l[0], s = e[1] = {
                coord: l[0]
            }; else {
                var u = e[1].coord - e[0].coord;
                d(e, function(t) {
                    t.coord -= u / 2;
                    var e = e || 0;
                    e % 2 > 0 && (t.coord -= u / (2 * (e + 1)));
                }), s = {
                    coord: e[o - 1].coord + u
                }, e.push(s);
            }
            var h = l[0] > l[1];
            a(e[0].coord, l[0]) && (r ? e[0].coord = l[0] : e.shift()), r && a(l[0], e[0].coord) && e.unshift({
                coord: l[0]
            }), a(l[1], s.coord) && (r ? s.coord = l[1] : e.pop()), r && a(s.coord, l[1]) && e.push({
                coord: l[1]
            });
        }
    }
    function $h(t, e) {
        var n = t.mapDimension("defaultedLabel", !0), i = n.length;
        if (1 === i) return zs(t, e, n[0]);
        if (i) {
            for (var r = [], a = 0; a < n.length; a++) {
                var o = zs(t, e, n[a]);
                r.push(o);
            }
            return r.join(" ");
        }
    }
    function Kh(t, e, n) {
        fd.call(this), this.updateData(t, e, n);
    }
    function Qh(t) {
        return [ t[0] / 2, t[1] / 2 ];
    }
    function Jh(t, e) {
        this.parent.drift(t, e);
    }
    function tc(t, e) {
        if (!this.incremental && !this.useHoverLayer) if ("emphasis" === e) {
            var n = this.__symbolOriginalScale, i = n[1] / n[0], r = {
                scale: [ Math.max(1.1 * n[0], n[0] + 3), Math.max(1.1 * n[1], n[1] + 3 * i) ]
            };
            this.animateTo(r, 400, "elasticOut");
        } else "normal" === e && this.animateTo({
            scale: this.__symbolOriginalScale
        }, 400, "elasticOut");
    }
    function ec(t) {
        this.group = new fd(), this._symbolCtor = t || Kh;
    }
    function nc(t, e, n, i) {
        return !(!e || isNaN(e[0]) || isNaN(e[1]) || i.isIgnore && i.isIgnore(n) || i.clipShape && !i.clipShape.contain(e[0], e[1]) || "none" === t.getItemVisual(n, "symbol"));
    }
    function ic(t) {
        return null == t || S(t) || (t = {
            isIgnore: t
        }), t || {};
    }
    function rc(t) {
        var e = t.hostModel;
        return {
            itemStyle: e.getModel("itemStyle").getItemStyle([ "color" ]),
            hoverItemStyle: e.getModel("emphasis.itemStyle").getItemStyle(),
            symbolRotate: e.get("symbolRotate"),
            symbolOffset: e.get("symbolOffset"),
            hoverAnimation: e.get("hoverAnimation"),
            labelModel: e.getModel("label"),
            hoverLabelModel: e.getModel("emphasis.label"),
            cursorStyle: e.get("cursor")
        };
    }
    function ac(t, e, n) {
        var i, r = t.getBaseAxis(), a = t.getOtherAxis(r), o = oc(a, n), s = r.dim, l = a.dim, u = e.mapDimension(l), h = e.mapDimension(s), c = "x" === l || "radius" === l ? 1 : 0, f = p(t.dimensions, function(t) {
            return e.mapDimension(t);
        }), d = e.getCalculationInfo("stackResultDimension");
        return (i |= Gu(e, f[0])) && (f[0] = d), (i |= Gu(e, f[1])) && (f[1] = d), {
            dataDimsForPoint: f,
            valueStart: o,
            valueAxisDim: l,
            baseAxisDim: s,
            stacked: !!i,
            valueDim: u,
            baseDim: h,
            baseDataOffset: c,
            stackedOverDimension: e.getCalculationInfo("stackedOverDimension")
        };
    }
    function oc(t, e) {
        var n = 0, i = t.scale.getExtent();
        return "start" === e ? n = i[0] : "end" === e ? n = i[1] : i[0] > 0 ? n = i[0] : i[1] < 0 && (n = i[1]), 
        n;
    }
    function sc(t, e, n, i) {
        var r = 0 / 0;
        t.stacked && (r = n.get(n.getCalculationInfo("stackedOverDimension"), i)), isNaN(r) && (r = t.valueStart);
        var a = t.baseDataOffset, o = [];
        return o[a] = n.get(t.baseDim, i), o[1 - a] = r, e.dataToPoint(o);
    }
    function lc(t, e) {
        var n = [];
        return e.diff(t).add(function(t) {
            n.push({
                cmd: "+",
                idx: t
            });
        }).update(function(t, e) {
            n.push({
                cmd: "=",
                idx: e,
                idx1: t
            });
        }).remove(function(t) {
            n.push({
                cmd: "-",
                idx: t
            });
        }).execute(), n;
    }
    function uc(t) {
        return isNaN(t[0]) || isNaN(t[1]);
    }
    function hc(t, e, n, i, r, a, o, s, l, u) {
        return "none" !== u && u ? cc.apply(this, arguments) : fc.apply(this, arguments);
    }
    function cc(t, e, n, i, r, a, o, s, l, u, h) {
        for (var c = 0, f = n, d = 0; i > d; d++) {
            var p = e[f];
            if (f >= r || 0 > f) break;
            if (uc(p)) {
                if (h) {
                    f += a;
                    continue;
                }
                break;
            }
            if (f === n) t[a > 0 ? "moveTo" : "lineTo"](p[0], p[1]); else if (l > 0) {
                var g = e[c], v = "y" === u ? 1 : 0, m = (p[v] - g[v]) * l;
                lx(hx, g), hx[v] = g[v] + m, lx(cx, p), cx[v] = p[v] - m, t.bezierCurveTo(hx[0], hx[1], cx[0], cx[1], p[0], p[1]);
            } else t.lineTo(p[0], p[1]);
            c = f, f += a;
        }
        return d;
    }
    function fc(t, e, n, i, r, a, o, s, l, u, h) {
        for (var c = 0, f = n, d = 0; i > d; d++) {
            var p = e[f];
            if (f >= r || 0 > f) break;
            if (uc(p)) {
                if (h) {
                    f += a;
                    continue;
                }
                break;
            }
            if (f === n) t[a > 0 ? "moveTo" : "lineTo"](p[0], p[1]), lx(hx, p); else if (l > 0) {
                var g = f + a, v = e[g];
                if (h) for (;v && uc(e[g]); ) g += a, v = e[g];
                var m = .5, y = e[c], v = e[g];
                if (!v || uc(v)) lx(cx, p); else {
                    uc(v) && !h && (v = p), U(ux, v, y);
                    var _, x;
                    if ("x" === u || "y" === u) {
                        var w = "x" === u ? 0 : 1;
                        _ = Math.abs(p[w] - y[w]), x = Math.abs(p[w] - v[w]);
                    } else _ = mf(p, y), x = mf(p, v);
                    m = x / (x + _), sx(cx, p, ux, -l * (1 - m));
                }
                ax(hx, hx, s), ox(hx, hx, o), ax(cx, cx, s), ox(cx, cx, o), t.bezierCurveTo(hx[0], hx[1], cx[0], cx[1], p[0], p[1]), 
                sx(hx, p, ux, l * m);
            } else t.lineTo(p[0], p[1]);
            c = f, f += a;
        }
        return d;
    }
    function dc(t, e) {
        var n = [ 1 / 0, 1 / 0 ], i = [ -1 / 0, -1 / 0 ];
        if (e) for (var r = 0; r < t.length; r++) {
            var a = t[r];
            a[0] < n[0] && (n[0] = a[0]), a[1] < n[1] && (n[1] = a[1]), a[0] > i[0] && (i[0] = a[0]), 
            a[1] > i[1] && (i[1] = a[1]);
        }
        return {
            min: e ? n : i,
            max: e ? i : n
        };
    }
    function pc(t, e, n) {
        var i = t.getArea(), r = t.getBaseAxis().isHorizontal(), a = i.x, o = i.y, s = i.width, l = i.height, u = n.get("lineStyle.width") || 2;
        a -= u / 2, o -= u / 2, s += u, l += u;
        var h = new Fg({
            shape: {
                x: a,
                y: o,
                width: s,
                height: l
            }
        });
        return e && (h.shape[r ? "width" : "height"] = 0, Va(h, {
            shape: {
                width: s,
                height: l
            }
        }, n)), h;
    }
    function gc(t, e, n) {
        var i = t.getArea(), r = new Ag({
            shape: {
                cx: so(t.cx, 1),
                cy: so(t.cy, 1),
                r0: so(i.r0, 1),
                r: so(i.r, 1),
                startAngle: i.startAngle,
                endAngle: i.endAngle,
                clockwise: i.clockwise
            }
        });
        return e && (r.shape.endAngle = i.startAngle, Va(r, {
            shape: {
                endAngle: i.endAngle
            }
        }, n)), r;
    }
    function vc(t, e) {
        if (t.length === e.length) {
            for (var n = 0; n < t.length; n++) {
                var i = t[n], r = e[n];
                if (i[0] !== r[0] || i[1] !== r[1]) return;
            }
            return !0;
        }
    }
    function mc(t) {
        return "number" == typeof t ? t : t ? .5 : 0;
    }
    function yc(t, e, n) {
        if (!n.valueDim) return [];
        for (var i = [], r = 0, a = e.count(); a > r; r++) i.push(sc(n, t, e, r));
        return i;
    }
    function _c(t, e, n) {
        for (var i = e.getBaseAxis(), r = "x" === i.dim || "radius" === i.dim ? 0 : 1, a = [], o = 0; o < t.length - 1; o++) {
            var s = t[o + 1], l = t[o];
            a.push(l);
            var u = [];
            switch (n) {
              case "end":
                u[r] = s[r], u[1 - r] = l[1 - r], a.push(u);
                break;

              case "middle":
                var h = (l[r] + s[r]) / 2, c = [];
                u[r] = c[r] = h, u[1 - r] = l[1 - r], c[1 - r] = s[1 - r], a.push(u), a.push(c);
                break;

              default:
                u[r] = l[r], u[1 - r] = s[1 - r], a.push(u);
            }
        }
        return t[o] && a.push(t[o]), a;
    }
    function xc(t, e) {
        var n = t.getVisual("visualMeta");
        if (n && n.length && t.count() && "cartesian2d" === e.type) {
            for (var i, r, a = n.length - 1; a >= 0; a--) {
                var o = n[a].dimension, s = t.dimensions[o], l = t.getDimensionInfo(s);
                if (i = l && l.coordDim, "x" === i || "y" === i) {
                    r = n[a];
                    break;
                }
            }
            if (r) {
                var u = e.getAxis(i), h = p(r.stops, function(t) {
                    return {
                        coord: u.toGlobalCoord(u.dataToCoord(t.value)),
                        color: t.color
                    };
                }), c = h.length, f = r.outerColors.slice();
                c && h[0].coord > h[c - 1].coord && (h.reverse(), f.reverse());
                var g = 10, v = h[0].coord - g, m = h[c - 1].coord + g, y = m - v;
                if (.001 > y) return "transparent";
                d(h, function(t) {
                    t.offset = (t.coord - v) / y;
                }), h.push({
                    offset: c ? h[c - 1].offset : .5,
                    color: f[1] || "transparent"
                }), h.unshift({
                    offset: c ? h[0].offset : .5,
                    color: f[0] || "transparent"
                });
                var _ = new jg(0, 0, 0, 0, h, !0);
                return _[i] = v, _[i + "2"] = m, _;
            }
        }
    }
    function wc(t, e, n) {
        var i = t.get("showAllSymbol"), r = "auto" === i;
        if (!i || r) {
            var a = n.getAxesByScale("ordinal")[0];
            if (a && (!r || !bc(a, e))) {
                var o = e.mapDimension(a.dim), s = {};
                return d(a.getViewLabels(), function(t) {
                    s[t.tickValue] = 1;
                }), function(t) {
                    return !s.hasOwnProperty(e.get(o, t));
                };
            }
        }
    }
    function bc(t, e) {
        var n = t.getExtent(), i = Math.abs(n[1] - n[0]) / t.scale.count();
        isNaN(i) && (i = 0);
        for (var r = e.count(), a = Math.max(1, Math.round(r / 5)), o = 0; r > o; o += a) if (1.5 * Kh.getSymbolSize(e, o)[t.isHorizontal() ? 1 : 0] > i) return !1;
        return !0;
    }
    function Sc(t, e, n) {
        if ("cartesian2d" === t.type) {
            var i = t.getBaseAxis().isHorizontal(), r = pc(t, e, n);
            if (!n.get("clip", !0)) {
                var a = r.shape, o = Math.max(a.width, a.height);
                i ? (a.y -= o, a.height += 2 * o) : (a.x -= o, a.width += 2 * o);
            }
            return r;
        }
        return gc(t, e, n);
    }
    function Mc(t) {
        return this._axes[t];
    }
    function Tc(t) {
        _x.call(this, t);
    }
    function Cc(t, e) {
        return e.type || (e.data ? "category" : "value");
    }
    function kc(t, e) {
        return t.getCoordSysModel() === e;
    }
    function Ic(t, e, n) {
        this._coordsMap = {}, this._coordsList = [], this._axesMap = {}, this._axesList = [], 
        this._initCartesian(t, e, n), this.model = t;
    }
    function Dc(t, e, n, i) {
        function r(t) {
            return t.dim + "_" + t.index;
        }
        n.getAxesOnZeroOf = function() {
            return a ? [ a ] : [];
        };
        var a, o = t[e], s = n.model, l = s.get("axisLine.onZero"), u = s.get("axisLine.onZeroAxisIndex");
        if (l) {
            if (null != u) Ac(o[u]) && (a = o[u]); else for (var h in o) if (o.hasOwnProperty(h) && Ac(o[h]) && !i[r(o[h])]) {
                a = o[h];
                break;
            }
            a && (i[r(a)] = !0);
        }
    }
    function Ac(t) {
        return t && "category" !== t.type && "time" !== t.type && mh(t);
    }
    function Pc(t, e) {
        var n = t.getExtent(), i = n[0] + n[1];
        t.toGlobalCoord = "x" === t.dim ? function(t) {
            return t + e;
        } : function(t) {
            return i - t + e;
        }, t.toLocalCoord = "x" === t.dim ? function(t) {
            return t - e;
        } : function(t) {
            return i - t + e;
        };
    }
    function Oc(t) {
        return p(Dx, function(e) {
            var n = t.getReferringComponents(e)[0];
            return n;
        });
    }
    function Lc(t) {
        return "cartesian2d" === t.get("coordinateSystem");
    }
    function Ec(t, e, n, i) {
        var r, a, o = po(n - t.rotation), s = i[0] > i[1], l = "start" === e && !s || "start" !== e && s;
        return go(o - Ax / 2) ? (a = l ? "bottom" : "top", r = "center") : go(o - 1.5 * Ax) ? (a = l ? "top" : "bottom", 
        r = "center") : (a = "middle", r = 1.5 * Ax > o && o > Ax / 2 ? l ? "left" : "right" : l ? "right" : "left"), 
        {
            rotation: o,
            textAlign: r,
            textVerticalAlign: a
        };
    }
    function Bc(t, e, n) {
        if (!Sh(t.axis)) {
            var i = t.get("axisLabel.showMinLabel"), r = t.get("axisLabel.showMaxLabel");
            e = e || [], n = n || [];
            var a = e[0], o = e[1], s = e[e.length - 1], l = e[e.length - 2], u = n[0], h = n[1], c = n[n.length - 1], f = n[n.length - 2];
            i === !1 ? (zc(a), zc(u)) : Rc(a, o) && (i ? (zc(o), zc(h)) : (zc(a), zc(u))), r === !1 ? (zc(s), 
            zc(c)) : Rc(l, s) && (r ? (zc(l), zc(f)) : (zc(s), zc(c)));
        }
    }
    function zc(t) {
        t && (t.ignore = !0);
    }
    function Rc(t, e) {
        var n = t && t.getBoundingRect().clone(), i = e && e.getBoundingRect().clone();
        if (n && i) {
            var r = Ie([]);
            return Oe(r, r, -t.rotation), n.applyTransform(Ae([], r, t.getLocalTransform())), 
            i.applyTransform(Ae([], r, e.getLocalTransform())), n.intersect(i);
        }
    }
    function Fc(t) {
        return "middle" === t || "center" === t;
    }
    function Nc(t, e, n) {
        var i = e.axis;
        if (e.get("axisTick.show") && !i.scale.isBlank()) {
            for (var r = e.getModel("axisTick"), a = r.getModel("lineStyle"), o = r.get("length"), l = i.getTicksCoords(), u = [], h = [], c = t._transform, f = [], d = 0; d < l.length; d++) {
                var p = l[d].coord;
                u[0] = p, u[1] = 0, h[0] = p, h[1] = n.tickDirection * o, c && (ae(u, u, c), ae(h, h, c));
                var g = new Vg({
                    anid: "tick_" + l[d].tickValue,
                    subPixelOptimize: !0,
                    shape: {
                        x1: u[0],
                        y1: u[1],
                        x2: h[0],
                        y2: h[1]
                    },
                    style: s(a.getLineStyle(), {
                        stroke: e.get("axisLine.lineStyle.color")
                    }),
                    z2: 2,
                    silent: !0
                });
                t.group.add(g), f.push(g);
            }
            return f;
        }
    }
    function Vc(t, e, n) {
        var i = e.axis, r = I(n.axisLabelShow, e.get("axisLabel.show"));
        if (r && !i.scale.isBlank()) {
            var a = e.getModel("axisLabel"), o = a.get("margin"), s = i.getViewLabels(), l = (I(n.labelRotate, a.get("rotate")) || 0) * Ax / 180, u = Ex(n.rotation, l, n.labelDirection), h = e.getCategories && e.getCategories(!0), c = [], f = Bx(e), p = e.get("triggerEvent");
            return d(s, function(r, s) {
                var l = r.tickValue, d = r.formattedLabel, g = r.rawLabel, v = a;
                h && h[l] && h[l].textStyle && (v = new Qa(h[l].textStyle, a, e.ecModel));
                var m = v.getTextColor() || e.get("axisLine.lineStyle.color"), y = i.dataToCoord(l), _ = [ y, n.labelOffset + n.labelDirection * o ], x = new Cg({
                    anid: "label_" + l,
                    position: _,
                    rotation: u.rotation,
                    silent: f,
                    z2: 10
                });
                Da(x.style, v, {
                    text: d,
                    textAlign: v.getShallow("align", !0) || u.textAlign,
                    textVerticalAlign: v.getShallow("verticalAlign", !0) || v.getShallow("baseline", !0) || u.textVerticalAlign,
                    textFill: "function" == typeof m ? m("category" === i.type ? g : "value" === i.type ? l + "" : l, s) : m
                }), p && (x.eventData = Lx(e), x.eventData.targetType = "axisLabel", x.eventData.value = g), 
                t._dumbGroup.add(x), x.updateTransform(), c.push(x), t.group.add(x), x.decomposeTransform();
            }), c;
        }
    }
    function Hc(t) {
        var e = Wc(t);
        if (e) {
            var n = e.axisPointerModel, i = e.axis.scale, r = n.option, a = n.get("status"), o = n.get("value");
            null != o && (o = i.parse(o));
            var s = Xc(n);
            null == a && (r.status = s ? "show" : "hide");
            var l = i.getExtent().slice();
            l[0] > l[1] && l.reverse(), (null == o || o > l[1]) && (o = l[1]), o < l[0] && (o = l[0]), 
            r.value = o, s && (r.status = e.axis.scale.isBlank() ? "hide" : "show");
        }
    }
    function Wc(t) {
        var e = (t.ecModel.getComponent("axisPointer") || {}).coordSysAxesInfo;
        return e && e.axesInfo[qc(t)];
    }
    function Gc(t) {
        var e = Wc(t);
        return e && e.axisPointerModel;
    }
    function Xc(t) {
        return !!t.get("handle.show");
    }
    function qc(t) {
        return t.type + "||" + t.id;
    }
    function jc(t, e, n, i, r, a) {
        var o = zx.getAxisPointerClass(t.axisPointerClass);
        if (o) {
            var s = Gc(e);
            s ? (t._axisPointer || (t._axisPointer = new o())).render(e, s, i, a) : Uc(t, i);
        }
    }
    function Uc(t, e, n) {
        var i = t._axisPointer;
        i && i.dispose(e, n), t._axisPointer = null;
    }
    function Yc(t, e, n) {
        n = n || {};
        var i = t.coordinateSystem, r = e.axis, a = {}, o = r.getAxesOnZeroOf()[0], s = r.position, l = o ? "onZero" : s, u = r.dim, h = i.getRect(), c = [ h.x, h.x + h.width, h.y, h.y + h.height ], f = {
            left: 0,
            right: 1,
            top: 0,
            bottom: 1,
            onZero: 2
        }, d = e.get("offset") || 0, p = "x" === u ? [ c[2] - d, c[3] + d ] : [ c[0] - d, c[1] + d ];
        if (o) {
            var g = o.toGlobalCoord(o.dataToCoord(0));
            p[f.onZero] = Math.max(Math.min(g, p[1]), p[0]);
        }
        a.position = [ "y" === u ? p[f[l]] : c[0], "x" === u ? p[f[l]] : c[3] ], a.rotation = Math.PI / 2 * ("x" === u ? 0 : 1);
        var v = {
            top: -1,
            bottom: 1,
            left: -1,
            right: 1
        };
        a.labelDirection = a.tickDirection = a.nameDirection = v[s], a.labelOffset = o ? p[f[s]] - p[f.onZero] : 0, 
        e.get("axisTick.inside") && (a.tickDirection = -a.tickDirection), I(n.labelInside, e.get("axisLabel.inside")) && (a.labelDirection = -a.labelDirection);
        var m = e.get("axisLabel.rotate");
        return a.labelRotate = "top" === l ? -m : m, a.z2 = 1, a;
    }
    var Zc = 2311, $c = function() {
        return Zc++;
    }, Kc = {};
    Kc = "object" == typeof wx && "function" == typeof wx.getSystemInfoSync ? {
        browser: {},
        os: {},
        node: !1,
        wxa: !0,
        canvasSupported: !0,
        svgSupported: !1,
        touchEventsSupported: !0,
        domSupported: !1
    } : "undefined" == typeof document && "undefined" != typeof self ? {
        browser: {},
        os: {},
        node: !1,
        worker: !0,
        canvasSupported: !0,
        domSupported: !1
    } : "undefined" == typeof navigator ? {
        browser: {},
        os: {},
        node: !0,
        worker: !1,
        canvasSupported: !0,
        svgSupported: !0,
        domSupported: !1
    } : e(navigator.userAgent);
    var Qc = Kc, Jc = {
        "[object Function]": 1,
        "[object RegExp]": 1,
        "[object Date]": 1,
        "[object Error]": 1,
        "[object CanvasGradient]": 1,
        "[object CanvasPattern]": 1,
        "[object Image]": 1,
        "[object Canvas]": 1
    }, tf = {
        "[object Int8Array]": 1,
        "[object Uint8Array]": 1,
        "[object Uint8ClampedArray]": 1,
        "[object Int16Array]": 1,
        "[object Uint16Array]": 1,
        "[object Int32Array]": 1,
        "[object Uint32Array]": 1,
        "[object Float32Array]": 1,
        "[object Float64Array]": 1
    }, ef = Object.prototype.toString, nf = Array.prototype, rf = nf.forEach, af = nf.filter, of = nf.slice, sf = nf.map, lf = nf.reduce, uf = {}, hf = function() {
        return uf.createCanvas();
    };
    uf.createCanvas = function() {
        return document.createElement("canvas");
    };
    var cf, ff = "__ec_primitive__";
    R.prototype = {
        constructor: R,
        get: function(t) {
            return this.data.hasOwnProperty(t) ? this.data[t] : null;
        },
        set: function(t, e) {
            return this.data[t] = e;
        },
        each: function(t, e) {
            void 0 !== e && (t = y(t, e));
            for (var n in this.data) this.data.hasOwnProperty(n) && t(this.data[n], n);
        },
        removeKey: function(t) {
            delete this.data[t];
        }
    };
    var df = (Object.freeze || Object)({
        $override: n,
        clone: i,
        merge: r,
        mergeAll: a,
        extend: o,
        defaults: s,
        createCanvas: hf,
        getContext: l,
        indexOf: u,
        inherits: h,
        mixin: c,
        isArrayLike: f,
        each: d,
        map: p,
        reduce: g,
        filter: v,
        find: m,
        bind: y,
        curry: _,
        isArray: x,
        isFunction: w,
        isString: b,
        isObject: S,
        isBuiltInObject: M,
        isTypedArray: T,
        isDom: C,
        eqNaN: k,
        retrieve: I,
        retrieve2: D,
        retrieve3: A,
        slice: P,
        normalizeCssArray: O,
        assert: L,
        trim: E,
        setAsPrimitive: B,
        isPrimitive: z,
        createHashMap: F,
        concatArray: N,
        noop: V
    }), pf = "undefined" == typeof Float32Array ? Array : Float32Array, gf = Y, vf = Z, mf = ee, yf = ne, _f = (Object.freeze || Object)({
        create: H,
        copy: W,
        clone: G,
        set: X,
        add: q,
        scaleAndAdd: j,
        sub: U,
        len: Y,
        length: gf,
        lenSquare: Z,
        lengthSquare: vf,
        mul: $,
        div: K,
        dot: Q,
        scale: J,
        normalize: te,
        distance: ee,
        dist: mf,
        distanceSquare: ne,
        distSquare: yf,
        negate: ie,
        lerp: re,
        applyTransform: ae,
        min: oe,
        max: se
    });
    le.prototype = {
        constructor: le,
        _dragStart: function(t) {
            var e = t.target;
            e && e.draggable && (this._draggingTarget = e, e.dragging = !0, this._x = t.offsetX, 
            this._y = t.offsetY, this.dispatchToElement(ue(e, t), "dragstart", t.event));
        },
        _drag: function(t) {
            var e = this._draggingTarget;
            if (e) {
                var n = t.offsetX, i = t.offsetY, r = n - this._x, a = i - this._y;
                this._x = n, this._y = i, e.drift(r, a, t), this.dispatchToElement(ue(e, t), "drag", t.event);
                var o = this.findHover(n, i, e).target, s = this._dropTarget;
                this._dropTarget = o, e !== o && (s && o !== s && this.dispatchToElement(ue(s, t), "dragleave", t.event), 
                o && o !== s && this.dispatchToElement(ue(o, t), "dragenter", t.event));
            }
        },
        _dragEnd: function(t) {
            var e = this._draggingTarget;
            e && (e.dragging = !1), this.dispatchToElement(ue(e, t), "dragend", t.event), this._dropTarget && this.dispatchToElement(ue(this._dropTarget, t), "drop", t.event), 
            this._draggingTarget = null, this._dropTarget = null;
        }
    };
    var xf = Array.prototype.slice, wf = function(t) {
        this._$handlers = {}, this._$eventProcessor = t;
    };
    wf.prototype = {
        constructor: wf,
        one: function(t, e, n, i) {
            return ce(this, t, e, n, i, !0);
        },
        on: function(t, e, n, i) {
            return ce(this, t, e, n, i, !1);
        },
        isSilent: function(t) {
            var e = this._$handlers;
            return !e[t] || !e[t].length;
        },
        off: function(t, e) {
            var n = this._$handlers;
            if (!t) return this._$handlers = {}, this;
            if (e) {
                if (n[t]) {
                    for (var i = [], r = 0, a = n[t].length; a > r; r++) n[t][r].h !== e && i.push(n[t][r]);
                    n[t] = i;
                }
                n[t] && 0 === n[t].length && delete n[t];
            } else delete n[t];
            return this;
        },
        trigger: function(t) {
            var e = this._$handlers[t], n = this._$eventProcessor;
            if (e) {
                var i = arguments, r = i.length;
                r > 3 && (i = xf.call(i, 1));
                for (var a = e.length, o = 0; a > o; ) {
                    var s = e[o];
                    if (n && n.filter && null != s.query && !n.filter(t, s.query)) o++; else {
                        switch (r) {
                          case 1:
                            s.h.call(s.ctx);
                            break;

                          case 2:
                            s.h.call(s.ctx, i[1]);
                            break;

                          case 3:
                            s.h.call(s.ctx, i[1], i[2]);
                            break;

                          default:
                            s.h.apply(s.ctx, i);
                        }
                        s.one ? (e.splice(o, 1), a--) : o++;
                    }
                }
            }
            return n && n.afterTrigger && n.afterTrigger(t), this;
        },
        triggerWithContext: function(t) {
            var e = this._$handlers[t], n = this._$eventProcessor;
            if (e) {
                var i = arguments, r = i.length;
                r > 4 && (i = xf.call(i, 1, i.length - 1));
                for (var a = i[i.length - 1], o = e.length, s = 0; o > s; ) {
                    var l = e[s];
                    if (n && n.filter && null != l.query && !n.filter(t, l.query)) s++; else {
                        switch (r) {
                          case 1:
                            l.h.call(a);
                            break;

                          case 2:
                            l.h.call(a, i[1]);
                            break;

                          case 3:
                            l.h.call(a, i[1], i[2]);
                            break;

                          default:
                            l.h.apply(a, i);
                        }
                        l.one ? (e.splice(s, 1), o--) : s++;
                    }
                }
            }
            return n && n.afterTrigger && n.afterTrigger(t), this;
        }
    };
    var bf = Math.log(2), Sf = "undefined" != typeof window && !!window.addEventListener, Mf = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, Tf = "___zrEVENTSAVED", Cf = [], kf = Sf ? function(t) {
        t.preventDefault(), t.stopPropagation(), t.cancelBubble = !0;
    } : function(t) {
        t.returnValue = !1, t.cancelBubble = !0;
    }, If = function() {
        this._track = [];
    };
    If.prototype = {
        constructor: If,
        recognize: function(t, e, n) {
            return this._doTrack(t, e, n), this._recognize(t);
        },
        clear: function() {
            return this._track.length = 0, this;
        },
        _doTrack: function(t, e, n) {
            var i = t.touches;
            if (i) {
                for (var r = {
                    points: [],
                    touches: [],
                    target: e,
                    event: t
                }, a = 0, o = i.length; o > a; a++) {
                    var s = i[a], l = pe(n, s, {});
                    r.points.push([ l.zrX, l.zrY ]), r.touches.push(s);
                }
                this._track.push(r);
            }
        },
        _recognize: function(t) {
            for (var e in Df) if (Df.hasOwnProperty(e)) {
                var n = Df[e](this._track, t);
                if (n) return n;
            }
        }
    };
    var Df = {
        pinch: function(t, e) {
            var n = t.length;
            if (n) {
                var i = (t[n - 1] || {}).points, r = (t[n - 2] || {}).points || i;
                if (r && r.length > 1 && i && i.length > 1) {
                    var a = we(i) / we(r);
                    !isFinite(a) && (a = 1), e.pinchScale = a;
                    var o = be(i);
                    return e.pinchX = o[0], e.pinchY = o[1], {
                        type: "pinch",
                        target: t[0].target,
                        event: e
                    };
                }
            }
        }
    }, Af = "silent";
    Te.prototype.dispose = function() {};
    var Pf = [ "click", "dblclick", "mousewheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu" ], Of = function(t, e, n, i) {
        wf.call(this), this.storage = t, this.painter = e, this.painterRoot = i, n = n || new Te(), 
        this.proxy = null, this._hovered = {}, this._lastTouchMoment, this._lastX, this._lastY, 
        this._gestureMgr, le.call(this), this.setHandlerProxy(n);
    };
    Of.prototype = {
        constructor: Of,
        setHandlerProxy: function(t) {
            this.proxy && this.proxy.dispose(), t && (d(Pf, function(e) {
                t.on && t.on(e, this[e], this);
            }, this), t.handler = this), this.proxy = t;
        },
        mousemove: function(t) {
            var e = t.zrX, n = t.zrY, i = this._hovered, r = i.target;
            r && !r.__zr && (i = this.findHover(i.x, i.y), r = i.target);
            var a = this._hovered = this.findHover(e, n), o = a.target, s = this.proxy;
            s.setCursor && s.setCursor(o ? o.cursor : "default"), r && o !== r && this.dispatchToElement(i, "mouseout", t), 
            this.dispatchToElement(a, "mousemove", t), o && o !== r && this.dispatchToElement(a, "mouseover", t);
        },
        mouseout: function(t) {
            this.dispatchToElement(this._hovered, "mouseout", t);
            var e, n = t.toElement || t.relatedTarget;
            do {
                n = n && n.parentNode;
            } while (n && 9 !== n.nodeType && !(e = n === this.painterRoot));
            !e && this.trigger("globalout", {
                event: t
            });
        },
        resize: function() {
            this._hovered = {};
        },
        dispatch: function(t, e) {
            var n = this[t];
            n && n.call(this, e);
        },
        dispose: function() {
            this.proxy.dispose(), this.storage = this.proxy = this.painter = null;
        },
        setCursorStyle: function(t) {
            var e = this.proxy;
            e.setCursor && e.setCursor(t);
        },
        dispatchToElement: function(t, e, n) {
            t = t || {};
            var i = t.target;
            if (!i || !i.silent) {
                for (var r = "on" + e, a = Se(e, t, n); i && (i[r] && (a.cancelBubble = i[r].call(i, a)), 
                i.trigger(e, a), i = i.parent, !a.cancelBubble); ) ;
                a.cancelBubble || (this.trigger(e, a), this.painter && this.painter.eachOtherLayer(function(t) {
                    "function" == typeof t[r] && t[r].call(t, a), t.trigger && t.trigger(e, a);
                }));
            }
        },
        findHover: function(t, e, n) {
            for (var i = this.storage.getDisplayList(), r = {
                x: t,
                y: e
            }, a = i.length - 1; a >= 0; a--) {
                var o;
                if (i[a] !== n && !i[a].ignore && (o = Ce(i[a], t, e)) && (!r.topTarget && (r.topTarget = i[a]), 
                o !== Af)) {
                    r.target = i[a];
                    break;
                }
            }
            return r;
        },
        processGesture: function(t, e) {
            this._gestureMgr || (this._gestureMgr = new If());
            var n = this._gestureMgr;
            "start" === e && n.clear();
            var i = n.recognize(t, this.findHover(t.zrX, t.zrY, null).target, this.proxy.dom);
            if ("end" === e && n.clear(), i) {
                var r = i.type;
                t.gestureEvent = r, this.dispatchToElement({
                    target: i.target
                }, r, i.event);
            }
        }
    }, d([ "click", "mousedown", "mouseup", "mousewheel", "dblclick", "contextmenu" ], function(t) {
        Of.prototype[t] = function(e) {
            var n = this.findHover(e.zrX, e.zrY), i = n.target;
            if ("mousedown" === t) this._downEl = i, this._downPoint = [ e.zrX, e.zrY ], this._upEl = i; else if ("mouseup" === t) this._upEl = i; else if ("click" === t) {
                if (this._downEl !== this._upEl || !this._downPoint || mf(this._downPoint, [ e.zrX, e.zrY ]) > 4) return;
                this._downPoint = null;
            }
            this.dispatchToElement(n, t, e);
        };
    }), c(Of, wf), c(Of, le);
    var Lf = "undefined" == typeof Float32Array ? Array : Float32Array, Ef = (Object.freeze || Object)({
        create: ke,
        identity: Ie,
        copy: De,
        mul: Ae,
        translate: Pe,
        rotate: Oe,
        scale: Le,
        invert: Ee,
        clone: Be
    }), Bf = Ie, zf = 5e-5, Rf = function(t) {
        t = t || {}, t.position || (this.position = [ 0, 0 ]), null == t.rotation && (this.rotation = 0), 
        t.scale || (this.scale = [ 1, 1 ]), this.origin = this.origin || null;
    }, Ff = Rf.prototype;
    Ff.transform = null, Ff.needLocalTransform = function() {
        return ze(this.rotation) || ze(this.position[0]) || ze(this.position[1]) || ze(this.scale[0] - 1) || ze(this.scale[1] - 1);
    };
    var Nf = [];
    Ff.updateTransform = function() {
        var t = this.parent, e = t && t.transform, n = this.needLocalTransform(), i = this.transform;
        if (!n && !e) return void (i && Bf(i));
        i = i || ke(), n ? this.getLocalTransform(i) : Bf(i), e && (n ? Ae(i, t.transform, i) : De(i, t.transform)), 
        this.transform = i;
        var r = this.globalScaleRatio;
        if (null != r && 1 !== r) {
            this.getGlobalScale(Nf);
            var a = Nf[0] < 0 ? -1 : 1, o = Nf[1] < 0 ? -1 : 1, s = ((Nf[0] - a) * r + a) / Nf[0] || 0, l = ((Nf[1] - o) * r + o) / Nf[1] || 0;
            i[0] *= s, i[1] *= s, i[2] *= l, i[3] *= l;
        }
        this.invTransform = this.invTransform || ke(), Ee(this.invTransform, i);
    }, Ff.getLocalTransform = function(t) {
        return Rf.getLocalTransform(this, t);
    }, Ff.setTransform = function(t) {
        var e = this.transform, n = t.dpr || 1;
        e ? t.setTransform(n * e[0], n * e[1], n * e[2], n * e[3], n * e[4], n * e[5]) : t.setTransform(n, 0, 0, n, 0, 0);
    }, Ff.restoreTransform = function(t) {
        var e = t.dpr || 1;
        t.setTransform(e, 0, 0, e, 0, 0);
    };
    var Vf = [], Hf = ke();
    Ff.setLocalTransform = function(t) {
        if (t) {
            var e = t[0] * t[0] + t[1] * t[1], n = t[2] * t[2] + t[3] * t[3], i = this.position, r = this.scale;
            ze(e - 1) && (e = Math.sqrt(e)), ze(n - 1) && (n = Math.sqrt(n)), t[0] < 0 && (e = -e), 
            t[3] < 0 && (n = -n), i[0] = t[4], i[1] = t[5], r[0] = e, r[1] = n, this.rotation = Math.atan2(-t[1] / n, t[0] / e);
        }
    }, Ff.decomposeTransform = function() {
        if (this.transform) {
            var t = this.parent, e = this.transform;
            t && t.transform && (Ae(Vf, t.invTransform, e), e = Vf);
            var n = this.origin;
            n && (n[0] || n[1]) && (Hf[4] = n[0], Hf[5] = n[1], Ae(Vf, e, Hf), Vf[4] -= n[0], 
            Vf[5] -= n[1], e = Vf), this.setLocalTransform(e);
        }
    }, Ff.getGlobalScale = function(t) {
        var e = this.transform;
        return t = t || [], e ? (t[0] = Math.sqrt(e[0] * e[0] + e[1] * e[1]), t[1] = Math.sqrt(e[2] * e[2] + e[3] * e[3]), 
        e[0] < 0 && (t[0] = -t[0]), e[3] < 0 && (t[1] = -t[1]), t) : (t[0] = 1, t[1] = 1, 
        t);
    }, Ff.transformCoordToLocal = function(t, e) {
        var n = [ t, e ], i = this.invTransform;
        return i && ae(n, n, i), n;
    }, Ff.transformCoordToGlobal = function(t, e) {
        var n = [ t, e ], i = this.transform;
        return i && ae(n, n, i), n;
    }, Rf.getLocalTransform = function(t, e) {
        e = e || [], Bf(e);
        var n = t.origin, i = t.scale || [ 1, 1 ], r = t.rotation || 0, a = t.position || [ 0, 0 ];
        return n && (e[4] -= n[0], e[5] -= n[1]), Le(e, e, i), r && Oe(e, e, r), n && (e[4] += n[0], 
        e[5] += n[1]), e[4] += a[0], e[5] += a[1], e;
    };
    var Wf = {
        linear: function(t) {
            return t;
        },
        quadraticIn: function(t) {
            return t * t;
        },
        quadraticOut: function(t) {
            return t * (2 - t);
        },
        quadraticInOut: function(t) {
            return (t *= 2) < 1 ? .5 * t * t : -.5 * (--t * (t - 2) - 1);
        },
        cubicIn: function(t) {
            return t * t * t;
        },
        cubicOut: function(t) {
            return --t * t * t + 1;
        },
        cubicInOut: function(t) {
            return (t *= 2) < 1 ? .5 * t * t * t : .5 * ((t -= 2) * t * t + 2);
        },
        quarticIn: function(t) {
            return t * t * t * t;
        },
        quarticOut: function(t) {
            return 1 - --t * t * t * t;
        },
        quarticInOut: function(t) {
            return (t *= 2) < 1 ? .5 * t * t * t * t : -.5 * ((t -= 2) * t * t * t - 2);
        },
        quinticIn: function(t) {
            return t * t * t * t * t;
        },
        quinticOut: function(t) {
            return --t * t * t * t * t + 1;
        },
        quinticInOut: function(t) {
            return (t *= 2) < 1 ? .5 * t * t * t * t * t : .5 * ((t -= 2) * t * t * t * t + 2);
        },
        sinusoidalIn: function(t) {
            return 1 - Math.cos(t * Math.PI / 2);
        },
        sinusoidalOut: function(t) {
            return Math.sin(t * Math.PI / 2);
        },
        sinusoidalInOut: function(t) {
            return .5 * (1 - Math.cos(Math.PI * t));
        },
        exponentialIn: function(t) {
            return 0 === t ? 0 : Math.pow(1024, t - 1);
        },
        exponentialOut: function(t) {
            return 1 === t ? 1 : 1 - Math.pow(2, -10 * t);
        },
        exponentialInOut: function(t) {
            return 0 === t ? 0 : 1 === t ? 1 : (t *= 2) < 1 ? .5 * Math.pow(1024, t - 1) : .5 * (-Math.pow(2, -10 * (t - 1)) + 2);
        },
        circularIn: function(t) {
            return 1 - Math.sqrt(1 - t * t);
        },
        circularOut: function(t) {
            return Math.sqrt(1 - --t * t);
        },
        circularInOut: function(t) {
            return (t *= 2) < 1 ? -.5 * (Math.sqrt(1 - t * t) - 1) : .5 * (Math.sqrt(1 - (t -= 2) * t) + 1);
        },
        elasticIn: function(t) {
            var e, n = .1, i = .4;
            return 0 === t ? 0 : 1 === t ? 1 : (!n || 1 > n ? (n = 1, e = i / 4) : e = i * Math.asin(1 / n) / (2 * Math.PI), 
            -(n * Math.pow(2, 10 * (t -= 1)) * Math.sin(2 * (t - e) * Math.PI / i)));
        },
        elasticOut: function(t) {
            var e, n = .1, i = .4;
            return 0 === t ? 0 : 1 === t ? 1 : (!n || 1 > n ? (n = 1, e = i / 4) : e = i * Math.asin(1 / n) / (2 * Math.PI), 
            n * Math.pow(2, -10 * t) * Math.sin(2 * (t - e) * Math.PI / i) + 1);
        },
        elasticInOut: function(t) {
            var e, n = .1, i = .4;
            return 0 === t ? 0 : 1 === t ? 1 : (!n || 1 > n ? (n = 1, e = i / 4) : e = i * Math.asin(1 / n) / (2 * Math.PI), 
            (t *= 2) < 1 ? -.5 * n * Math.pow(2, 10 * (t -= 1)) * Math.sin(2 * (t - e) * Math.PI / i) : n * Math.pow(2, -10 * (t -= 1)) * Math.sin(2 * (t - e) * Math.PI / i) * .5 + 1);
        },
        backIn: function(t) {
            var e = 1.70158;
            return t * t * ((e + 1) * t - e);
        },
        backOut: function(t) {
            var e = 1.70158;
            return --t * t * ((e + 1) * t + e) + 1;
        },
        backInOut: function(t) {
            var e = 2.5949095;
            return (t *= 2) < 1 ? .5 * t * t * ((e + 1) * t - e) : .5 * ((t -= 2) * t * ((e + 1) * t + e) + 2);
        },
        bounceIn: function(t) {
            return 1 - Wf.bounceOut(1 - t);
        },
        bounceOut: function(t) {
            return 1 / 2.75 > t ? 7.5625 * t * t : 2 / 2.75 > t ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : 2.5 / 2.75 > t ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
        },
        bounceInOut: function(t) {
            return .5 > t ? .5 * Wf.bounceIn(2 * t) : .5 * Wf.bounceOut(2 * t - 1) + .5;
        }
    };
    Re.prototype = {
        constructor: Re,
        step: function(t, e) {
            if (this._initialized || (this._startTime = t + this._delay, this._initialized = !0), 
            this._paused) return void (this._pausedTime += e);
            var n = (t - this._startTime - this._pausedTime) / this._life;
            if (!(0 > n)) {
                n = Math.min(n, 1);
                var i = this.easing, r = "string" == typeof i ? Wf[i] : i, a = "function" == typeof r ? r(n) : n;
                return this.fire("frame", a), 1 === n ? this.loop ? (this.restart(t), "restart") : (this._needsRemove = !0, 
                "destroy") : null;
            }
        },
        restart: function(t) {
            var e = (t - this._startTime - this._pausedTime) % this._life;
            this._startTime = t - e + this.gap, this._pausedTime = 0, this._needsRemove = !1;
        },
        fire: function(t, e) {
            t = "on" + t, this[t] && this[t](this._target, e);
        },
        pause: function() {
            this._paused = !0;
        },
        resume: function() {
            this._paused = !1;
        }
    };
    var Gf = function() {
        this.head = null, this.tail = null, this._len = 0;
    }, Xf = Gf.prototype;
    Xf.insert = function(t) {
        var e = new qf(t);
        return this.insertEntry(e), e;
    }, Xf.insertEntry = function(t) {
        this.head ? (this.tail.next = t, t.prev = this.tail, t.next = null, this.tail = t) : this.head = this.tail = t, 
        this._len++;
    }, Xf.remove = function(t) {
        var e = t.prev, n = t.next;
        e ? e.next = n : this.head = n, n ? n.prev = e : this.tail = e, t.next = t.prev = null, 
        this._len--;
    }, Xf.len = function() {
        return this._len;
    }, Xf.clear = function() {
        this.head = this.tail = null, this._len = 0;
    };
    var qf = function(t) {
        this.value = t, this.next, this.prev;
    }, jf = function(t) {
        this._list = new Gf(), this._map = {}, this._maxSize = t || 10, this._lastRemovedEntry = null;
    }, Uf = jf.prototype;
    Uf.put = function(t, e) {
        var n = this._list, i = this._map, r = null;
        if (null == i[t]) {
            var a = n.len(), o = this._lastRemovedEntry;
            if (a >= this._maxSize && a > 0) {
                var s = n.head;
                n.remove(s), delete i[s.key], r = s.value, this._lastRemovedEntry = s;
            }
            o ? o.value = e : o = new qf(e), o.key = t, n.insertEntry(o), i[t] = o;
        }
        return r;
    }, Uf.get = function(t) {
        var e = this._map[t], n = this._list;
        return null != e ? (e !== n.tail && (n.remove(e), n.insertEntry(e)), e.value) : void 0;
    }, Uf.clear = function() {
        this._list.clear(), this._map = {};
    };
    var Yf = {
        transparent: [ 0, 0, 0, 0 ],
        aliceblue: [ 240, 248, 255, 1 ],
        antiquewhite: [ 250, 235, 215, 1 ],
        aqua: [ 0, 255, 255, 1 ],
        aquamarine: [ 127, 255, 212, 1 ],
        azure: [ 240, 255, 255, 1 ],
        beige: [ 245, 245, 220, 1 ],
        bisque: [ 255, 228, 196, 1 ],
        black: [ 0, 0, 0, 1 ],
        blanchedalmond: [ 255, 235, 205, 1 ],
        blue: [ 0, 0, 255, 1 ],
        blueviolet: [ 138, 43, 226, 1 ],
        brown: [ 165, 42, 42, 1 ],
        burlywood: [ 222, 184, 135, 1 ],
        cadetblue: [ 95, 158, 160, 1 ],
        chartreuse: [ 127, 255, 0, 1 ],
        chocolate: [ 210, 105, 30, 1 ],
        coral: [ 255, 127, 80, 1 ],
        cornflowerblue: [ 100, 149, 237, 1 ],
        cornsilk: [ 255, 248, 220, 1 ],
        crimson: [ 220, 20, 60, 1 ],
        cyan: [ 0, 255, 255, 1 ],
        darkblue: [ 0, 0, 139, 1 ],
        darkcyan: [ 0, 139, 139, 1 ],
        darkgoldenrod: [ 184, 134, 11, 1 ],
        darkgray: [ 169, 169, 169, 1 ],
        darkgreen: [ 0, 100, 0, 1 ],
        darkgrey: [ 169, 169, 169, 1 ],
        darkkhaki: [ 189, 183, 107, 1 ],
        darkmagenta: [ 139, 0, 139, 1 ],
        darkolivegreen: [ 85, 107, 47, 1 ],
        darkorange: [ 255, 140, 0, 1 ],
        darkorchid: [ 153, 50, 204, 1 ],
        darkred: [ 139, 0, 0, 1 ],
        darksalmon: [ 233, 150, 122, 1 ],
        darkseagreen: [ 143, 188, 143, 1 ],
        darkslateblue: [ 72, 61, 139, 1 ],
        darkslategray: [ 47, 79, 79, 1 ],
        darkslategrey: [ 47, 79, 79, 1 ],
        darkturquoise: [ 0, 206, 209, 1 ],
        darkviolet: [ 148, 0, 211, 1 ],
        deeppink: [ 255, 20, 147, 1 ],
        deepskyblue: [ 0, 191, 255, 1 ],
        dimgray: [ 105, 105, 105, 1 ],
        dimgrey: [ 105, 105, 105, 1 ],
        dodgerblue: [ 30, 144, 255, 1 ],
        firebrick: [ 178, 34, 34, 1 ],
        floralwhite: [ 255, 250, 240, 1 ],
        forestgreen: [ 34, 139, 34, 1 ],
        fuchsia: [ 255, 0, 255, 1 ],
        gainsboro: [ 220, 220, 220, 1 ],
        ghostwhite: [ 248, 248, 255, 1 ],
        gold: [ 255, 215, 0, 1 ],
        goldenrod: [ 218, 165, 32, 1 ],
        gray: [ 128, 128, 128, 1 ],
        green: [ 0, 128, 0, 1 ],
        greenyellow: [ 173, 255, 47, 1 ],
        grey: [ 128, 128, 128, 1 ],
        honeydew: [ 240, 255, 240, 1 ],
        hotpink: [ 255, 105, 180, 1 ],
        indianred: [ 205, 92, 92, 1 ],
        indigo: [ 75, 0, 130, 1 ],
        ivory: [ 255, 255, 240, 1 ],
        khaki: [ 240, 230, 140, 1 ],
        lavender: [ 230, 230, 250, 1 ],
        lavenderblush: [ 255, 240, 245, 1 ],
        lawngreen: [ 124, 252, 0, 1 ],
        lemonchiffon: [ 255, 250, 205, 1 ],
        lightblue: [ 173, 216, 230, 1 ],
        lightcoral: [ 240, 128, 128, 1 ],
        lightcyan: [ 224, 255, 255, 1 ],
        lightgoldenrodyellow: [ 250, 250, 210, 1 ],
        lightgray: [ 211, 211, 211, 1 ],
        lightgreen: [ 144, 238, 144, 1 ],
        lightgrey: [ 211, 211, 211, 1 ],
        lightpink: [ 255, 182, 193, 1 ],
        lightsalmon: [ 255, 160, 122, 1 ],
        lightseagreen: [ 32, 178, 170, 1 ],
        lightskyblue: [ 135, 206, 250, 1 ],
        lightslategray: [ 119, 136, 153, 1 ],
        lightslategrey: [ 119, 136, 153, 1 ],
        lightsteelblue: [ 176, 196, 222, 1 ],
        lightyellow: [ 255, 255, 224, 1 ],
        lime: [ 0, 255, 0, 1 ],
        limegreen: [ 50, 205, 50, 1 ],
        linen: [ 250, 240, 230, 1 ],
        magenta: [ 255, 0, 255, 1 ],
        maroon: [ 128, 0, 0, 1 ],
        mediumaquamarine: [ 102, 205, 170, 1 ],
        mediumblue: [ 0, 0, 205, 1 ],
        mediumorchid: [ 186, 85, 211, 1 ],
        mediumpurple: [ 147, 112, 219, 1 ],
        mediumseagreen: [ 60, 179, 113, 1 ],
        mediumslateblue: [ 123, 104, 238, 1 ],
        mediumspringgreen: [ 0, 250, 154, 1 ],
        mediumturquoise: [ 72, 209, 204, 1 ],
        mediumvioletred: [ 199, 21, 133, 1 ],
        midnightblue: [ 25, 25, 112, 1 ],
        mintcream: [ 245, 255, 250, 1 ],
        mistyrose: [ 255, 228, 225, 1 ],
        moccasin: [ 255, 228, 181, 1 ],
        navajowhite: [ 255, 222, 173, 1 ],
        navy: [ 0, 0, 128, 1 ],
        oldlace: [ 253, 245, 230, 1 ],
        olive: [ 128, 128, 0, 1 ],
        olivedrab: [ 107, 142, 35, 1 ],
        orange: [ 255, 165, 0, 1 ],
        orangered: [ 255, 69, 0, 1 ],
        orchid: [ 218, 112, 214, 1 ],
        palegoldenrod: [ 238, 232, 170, 1 ],
        palegreen: [ 152, 251, 152, 1 ],
        paleturquoise: [ 175, 238, 238, 1 ],
        palevioletred: [ 219, 112, 147, 1 ],
        papayawhip: [ 255, 239, 213, 1 ],
        peachpuff: [ 255, 218, 185, 1 ],
        peru: [ 205, 133, 63, 1 ],
        pink: [ 255, 192, 203, 1 ],
        plum: [ 221, 160, 221, 1 ],
        powderblue: [ 176, 224, 230, 1 ],
        purple: [ 128, 0, 128, 1 ],
        red: [ 255, 0, 0, 1 ],
        rosybrown: [ 188, 143, 143, 1 ],
        royalblue: [ 65, 105, 225, 1 ],
        saddlebrown: [ 139, 69, 19, 1 ],
        salmon: [ 250, 128, 114, 1 ],
        sandybrown: [ 244, 164, 96, 1 ],
        seagreen: [ 46, 139, 87, 1 ],
        seashell: [ 255, 245, 238, 1 ],
        sienna: [ 160, 82, 45, 1 ],
        silver: [ 192, 192, 192, 1 ],
        skyblue: [ 135, 206, 235, 1 ],
        slateblue: [ 106, 90, 205, 1 ],
        slategray: [ 112, 128, 144, 1 ],
        slategrey: [ 112, 128, 144, 1 ],
        snow: [ 255, 250, 250, 1 ],
        springgreen: [ 0, 255, 127, 1 ],
        steelblue: [ 70, 130, 180, 1 ],
        tan: [ 210, 180, 140, 1 ],
        teal: [ 0, 128, 128, 1 ],
        thistle: [ 216, 191, 216, 1 ],
        tomato: [ 255, 99, 71, 1 ],
        turquoise: [ 64, 224, 208, 1 ],
        violet: [ 238, 130, 238, 1 ],
        wheat: [ 245, 222, 179, 1 ],
        white: [ 255, 255, 255, 1 ],
        whitesmoke: [ 245, 245, 245, 1 ],
        yellow: [ 255, 255, 0, 1 ],
        yellowgreen: [ 154, 205, 50, 1 ]
    }, Zf = new jf(20), $f = null, Kf = Je, Qf = tn, Jf = (Object.freeze || Object)({
        parse: Ye,
        lift: Ke,
        toHex: Qe,
        fastLerp: Je,
        fastMapToColor: Kf,
        lerp: tn,
        mapToColor: Qf,
        modifyHSL: en,
        modifyAlpha: nn,
        stringify: rn
    }), td = Array.prototype.slice, ed = function(t, e, n, i) {
        this._tracks = {}, this._target = t, this._loop = e || !1, this._getter = n || an, 
        this._setter = i || on, this._clipCount = 0, this._delay = 0, this._doneList = [], 
        this._onframeList = [], this._clipList = [];
    };
    ed.prototype = {
        when: function(t, e) {
            var n = this._tracks;
            for (var i in e) if (e.hasOwnProperty(i)) {
                if (!n[i]) {
                    n[i] = [];
                    var r = this._getter(this._target, i);
                    if (null == r) continue;
                    0 !== t && n[i].push({
                        time: 0,
                        value: pn(r)
                    });
                }
                n[i].push({
                    time: t,
                    value: e[i]
                });
            }
            return this;
        },
        during: function(t) {
            return this._onframeList.push(t), this;
        },
        pause: function() {
            for (var t = 0; t < this._clipList.length; t++) this._clipList[t].pause();
            this._paused = !0;
        },
        resume: function() {
            for (var t = 0; t < this._clipList.length; t++) this._clipList[t].resume();
            this._paused = !1;
        },
        isPaused: function() {
            return !!this._paused;
        },
        _doneCallback: function() {
            this._tracks = {}, this._clipList.length = 0;
            for (var t = this._doneList, e = t.length, n = 0; e > n; n++) t[n].call(this);
        },
        start: function(t, e) {
            var n, i = this, r = 0, a = function() {
                r--, r || i._doneCallback();
            };
            for (var o in this._tracks) if (this._tracks.hasOwnProperty(o)) {
                var s = mn(this, t, a, this._tracks[o], o, e);
                s && (this._clipList.push(s), r++, this.animation && this.animation.addClip(s), 
                n = s);
            }
            if (n) {
                var l = n.onframe;
                n.onframe = function(t, e) {
                    l(t, e);
                    for (var n = 0; n < i._onframeList.length; n++) i._onframeList[n](t, e);
                };
            }
            return r || this._doneCallback(), this;
        },
        stop: function(t) {
            for (var e = this._clipList, n = this.animation, i = 0; i < e.length; i++) {
                var r = e[i];
                t && r.onframe(this._target, 1), n && n.removeClip(r);
            }
            e.length = 0;
        },
        delay: function(t) {
            return this._delay = t, this;
        },
        done: function(t) {
            return t && this._doneList.push(t), this;
        },
        getClips: function() {
            return this._clipList;
        }
    };
    var nd = 1;
    "undefined" != typeof window && (nd = Math.max(window.devicePixelRatio || 1, 1));
    var id = 0, rd = nd, ad = function() {};
    1 === id && (ad = console.error);
    var od = ad, sd = function() {
        this.animators = [];
    };
    sd.prototype = {
        constructor: sd,
        animate: function(t, e) {
            var n, i = !1, r = this, a = this.__zr;
            if (t) {
                var o = t.split("."), s = r;
                i = "shape" === o[0];
                for (var l = 0, h = o.length; h > l; l++) s && (s = s[o[l]]);
                s && (n = s);
            } else n = r;
            if (!n) return void od('Property "' + t + '" is not existed in element ' + r.id);
            var c = r.animators, f = new ed(n, e);
            return f.during(function() {
                r.dirty(i);
            }).done(function() {
                c.splice(u(c, f), 1);
            }), c.push(f), a && a.animation.addAnimator(f), f;
        },
        stopAnimation: function(t) {
            for (var e = this.animators, n = e.length, i = 0; n > i; i++) e[i].stop(t);
            return e.length = 0, this;
        },
        animateTo: function(t, e, n, i, r, a) {
            yn(this, t, e, n, i, r, a);
        },
        animateFrom: function(t, e, n, i, r, a) {
            yn(this, t, e, n, i, r, a, !0);
        }
    };
    var ld = function(t) {
        Rf.call(this, t), wf.call(this, t), sd.call(this, t), this.id = t.id || $c();
    };
    ld.prototype = {
        type: "element",
        name: "",
        __zr: null,
        ignore: !1,
        clipPath: null,
        isGroup: !1,
        drift: function(t, e) {
            switch (this.draggable) {
              case "horizontal":
                e = 0;
                break;

              case "vertical":
                t = 0;
            }
            var n = this.transform;
            n || (n = this.transform = [ 1, 0, 0, 1, 0, 0 ]), n[4] += t, n[5] += e, this.decomposeTransform(), 
            this.dirty(!1);
        },
        beforeUpdate: function() {},
        afterUpdate: function() {},
        update: function() {
            this.updateTransform();
        },
        traverse: function() {},
        attrKV: function(t, e) {
            if ("position" === t || "scale" === t || "origin" === t) {
                if (e) {
                    var n = this[t];
                    n || (n = this[t] = []), n[0] = e[0], n[1] = e[1];
                }
            } else this[t] = e;
        },
        hide: function() {
            this.ignore = !0, this.__zr && this.__zr.refresh();
        },
        show: function() {
            this.ignore = !1, this.__zr && this.__zr.refresh();
        },
        attr: function(t, e) {
            if ("string" == typeof t) this.attrKV(t, e); else if (S(t)) for (var n in t) t.hasOwnProperty(n) && this.attrKV(n, t[n]);
            return this.dirty(!1), this;
        },
        setClipPath: function(t) {
            var e = this.__zr;
            e && t.addSelfToZr(e), this.clipPath && this.clipPath !== t && this.removeClipPath(), 
            this.clipPath = t, t.__zr = e, t.__clipTarget = this, this.dirty(!1);
        },
        removeClipPath: function() {
            var t = this.clipPath;
            t && (t.__zr && t.removeSelfFromZr(t.__zr), t.__zr = null, t.__clipTarget = null, 
            this.clipPath = null, this.dirty(!1));
        },
        addSelfToZr: function(t) {
            this.__zr = t;
            var e = this.animators;
            if (e) for (var n = 0; n < e.length; n++) t.animation.addAnimator(e[n]);
            this.clipPath && this.clipPath.addSelfToZr(t);
        },
        removeSelfFromZr: function(t) {
            this.__zr = null;
            var e = this.animators;
            if (e) for (var n = 0; n < e.length; n++) t.animation.removeAnimator(e[n]);
            this.clipPath && this.clipPath.removeSelfFromZr(t);
        }
    }, c(ld, sd), c(ld, Rf), c(ld, wf);
    var ud = ae, hd = Math.min, cd = Math.max;
    wn.prototype = {
        constructor: wn,
        union: function(t) {
            var e = hd(t.x, this.x), n = hd(t.y, this.y);
            this.width = cd(t.x + t.width, this.x + this.width) - e, this.height = cd(t.y + t.height, this.y + this.height) - n, 
            this.x = e, this.y = n;
        },
        applyTransform: function() {
            var t = [], e = [], n = [], i = [];
            return function(r) {
                if (r) {
                    t[0] = n[0] = this.x, t[1] = i[1] = this.y, e[0] = i[0] = this.x + this.width, e[1] = n[1] = this.y + this.height, 
                    ud(t, t, r), ud(e, e, r), ud(n, n, r), ud(i, i, r), this.x = hd(t[0], e[0], n[0], i[0]), 
                    this.y = hd(t[1], e[1], n[1], i[1]);
                    var a = cd(t[0], e[0], n[0], i[0]), o = cd(t[1], e[1], n[1], i[1]);
                    this.width = a - this.x, this.height = o - this.y;
                }
            };
        }(),
        calculateTransform: function(t) {
            var e = this, n = t.width / e.width, i = t.height / e.height, r = ke();
            return Pe(r, r, [ -e.x, -e.y ]), Le(r, r, [ n, i ]), Pe(r, r, [ t.x, t.y ]), r;
        },
        intersect: function(t) {
            if (!t) return !1;
            t instanceof wn || (t = wn.create(t));
            var e = this, n = e.x, i = e.x + e.width, r = e.y, a = e.y + e.height, o = t.x, s = t.x + t.width, l = t.y, u = t.y + t.height;
            return !(o > i || n > s || l > a || r > u);
        },
        contain: function(t, e) {
            var n = this;
            return t >= n.x && t <= n.x + n.width && e >= n.y && e <= n.y + n.height;
        },
        clone: function() {
            return new wn(this.x, this.y, this.width, this.height);
        },
        copy: function(t) {
            this.x = t.x, this.y = t.y, this.width = t.width, this.height = t.height;
        },
        plain: function() {
            return {
                x: this.x,
                y: this.y,
                width: this.width,
                height: this.height
            };
        }
    }, wn.create = function(t) {
        return new wn(t.x, t.y, t.width, t.height);
    };
    var fd = function(t) {
        t = t || {}, ld.call(this, t);
        for (var e in t) t.hasOwnProperty(e) && (this[e] = t[e]);
        this._children = [], this.__storage = null, this.__dirty = !0;
    };
    fd.prototype = {
        constructor: fd,
        isGroup: !0,
        type: "group",
        silent: !1,
        children: function() {
            return this._children.slice();
        },
        childAt: function(t) {
            return this._children[t];
        },
        childOfName: function(t) {
            for (var e = this._children, n = 0; n < e.length; n++) if (e[n].name === t) return e[n];
        },
        childCount: function() {
            return this._children.length;
        },
        add: function(t) {
            return t && t !== this && t.parent !== this && (this._children.push(t), this._doAdd(t)), 
            this;
        },
        addBefore: function(t, e) {
            if (t && t !== this && t.parent !== this && e && e.parent === this) {
                var n = this._children, i = n.indexOf(e);
                i >= 0 && (n.splice(i, 0, t), this._doAdd(t));
            }
            return this;
        },
        _doAdd: function(t) {
            t.parent && t.parent.remove(t), t.parent = this;
            var e = this.__storage, n = this.__zr;
            e && e !== t.__storage && (e.addToStorage(t), t instanceof fd && t.addChildrenToStorage(e)), 
            n && n.refresh();
        },
        remove: function(t) {
            var e = this.__zr, n = this.__storage, i = this._children, r = u(i, t);
            return 0 > r ? this : (i.splice(r, 1), t.parent = null, n && (n.delFromStorage(t), 
            t instanceof fd && t.delChildrenFromStorage(n)), e && e.refresh(), this);
        },
        removeAll: function() {
            var t, e, n = this._children, i = this.__storage;
            for (e = 0; e < n.length; e++) t = n[e], i && (i.delFromStorage(t), t instanceof fd && t.delChildrenFromStorage(i)), 
            t.parent = null;
            return n.length = 0, this;
        },
        eachChild: function(t, e) {
            for (var n = this._children, i = 0; i < n.length; i++) {
                var r = n[i];
                t.call(e, r, i);
            }
            return this;
        },
        traverse: function(t, e) {
            for (var n = 0; n < this._children.length; n++) {
                var i = this._children[n];
                t.call(e, i), "group" === i.type && i.traverse(t, e);
            }
            return this;
        },
        addChildrenToStorage: function(t) {
            for (var e = 0; e < this._children.length; e++) {
                var n = this._children[e];
                t.addToStorage(n), n instanceof fd && n.addChildrenToStorage(t);
            }
        },
        delChildrenFromStorage: function(t) {
            for (var e = 0; e < this._children.length; e++) {
                var n = this._children[e];
                t.delFromStorage(n), n instanceof fd && n.delChildrenFromStorage(t);
            }
        },
        dirty: function() {
            return this.__dirty = !0, this.__zr && this.__zr.refresh(), this;
        },
        getBoundingRect: function(t) {
            for (var e = null, n = new wn(0, 0, 0, 0), i = t || this._children, r = [], a = 0; a < i.length; a++) {
                var o = i[a];
                if (!o.ignore && !o.invisible) {
                    var s = o.getBoundingRect(), l = o.getLocalTransform(r);
                    l ? (n.copy(s), n.applyTransform(l), e = e || n.clone(), e.union(n)) : (e = e || s.clone(), 
                    e.union(s));
                }
            }
            return e || n;
        }
    }, h(fd, ld);
    var dd = 32, pd = 7, gd = function() {
        this._roots = [], this._displayList = [], this._displayListLen = 0;
    };
    gd.prototype = {
        constructor: gd,
        traverse: function(t, e) {
            for (var n = 0; n < this._roots.length; n++) this._roots[n].traverse(t, e);
        },
        getDisplayList: function(t, e) {
            return e = e || !1, t && this.updateDisplayList(e), this._displayList;
        },
        updateDisplayList: function(t) {
            this._displayListLen = 0;
            for (var e = this._roots, n = this._displayList, i = 0, r = e.length; r > i; i++) this._updateAndAddDisplayable(e[i], null, t);
            n.length = this._displayListLen, Qc.canvasSupported && Dn(n, An);
        },
        _updateAndAddDisplayable: function(t, e, n) {
            if (!t.ignore || n) {
                t.beforeUpdate(), t.__dirty && t.update(), t.afterUpdate();
                var i = t.clipPath;
                if (i) {
                    e = e ? e.slice() : [];
                    for (var r = i, a = t; r; ) r.parent = a, r.updateTransform(), e.push(r), a = r, 
                    r = r.clipPath;
                }
                if (t.isGroup) {
                    for (var o = t._children, s = 0; s < o.length; s++) {
                        var l = o[s];
                        t.__dirty && (l.__dirty = !0), this._updateAndAddDisplayable(l, e, n);
                    }
                    t.__dirty = !1;
                } else t.__clipPaths = e, this._displayList[this._displayListLen++] = t;
            }
        },
        addRoot: function(t) {
            t.__storage !== this && (t instanceof fd && t.addChildrenToStorage(this), this.addToStorage(t), 
            this._roots.push(t));
        },
        delRoot: function(t) {
            if (null == t) {
                for (var e = 0; e < this._roots.length; e++) {
                    var n = this._roots[e];
                    n instanceof fd && n.delChildrenFromStorage(this);
                }
                return this._roots = [], this._displayList = [], void (this._displayListLen = 0);
            }
            if (t instanceof Array) for (var e = 0, i = t.length; i > e; e++) this.delRoot(t[e]); else {
                var r = u(this._roots, t);
                r >= 0 && (this.delFromStorage(t), this._roots.splice(r, 1), t instanceof fd && t.delChildrenFromStorage(this));
            }
        },
        addToStorage: function(t) {
            return t && (t.__storage = this, t.dirty(!1)), this;
        },
        delFromStorage: function(t) {
            return t && (t.__storage = null), this;
        },
        dispose: function() {
            this._renderList = this._roots = null;
        },
        displayableSortFunc: An
    };
    var vd = {
        shadowBlur: 1,
        shadowOffsetX: 1,
        shadowOffsetY: 1,
        textShadowBlur: 1,
        textShadowOffsetX: 1,
        textShadowOffsetY: 1,
        textBoxShadowBlur: 1,
        textBoxShadowOffsetX: 1,
        textBoxShadowOffsetY: 1
    }, md = function(t, e, n) {
        return vd.hasOwnProperty(e) ? n *= t.dpr : n;
    }, yd = {
        NONE: 0,
        STYLE_BIND: 1,
        PLAIN_TEXT: 2
    }, _d = 9, xd = [ [ "shadowBlur", 0 ], [ "shadowOffsetX", 0 ], [ "shadowOffsetY", 0 ], [ "shadowColor", "#000" ], [ "lineCap", "butt" ], [ "lineJoin", "miter" ], [ "miterLimit", 10 ] ], wd = function(t) {
        this.extendFrom(t, !1);
    };
    wd.prototype = {
        constructor: wd,
        fill: "#000",
        stroke: null,
        opacity: 1,
        fillOpacity: null,
        strokeOpacity: null,
        lineDash: null,
        lineDashOffset: 0,
        shadowBlur: 0,
        shadowOffsetX: 0,
        shadowOffsetY: 0,
        lineWidth: 1,
        strokeNoScale: !1,
        text: null,
        font: null,
        textFont: null,
        fontStyle: null,
        fontWeight: null,
        fontSize: null,
        fontFamily: null,
        textTag: null,
        textFill: "#000",
        textStroke: null,
        textWidth: null,
        textHeight: null,
        textStrokeWidth: 0,
        textLineHeight: null,
        textPosition: "inside",
        textRect: null,
        textOffset: null,
        textAlign: null,
        textVerticalAlign: null,
        textDistance: 5,
        textShadowColor: "transparent",
        textShadowBlur: 0,
        textShadowOffsetX: 0,
        textShadowOffsetY: 0,
        textBoxShadowColor: "transparent",
        textBoxShadowBlur: 0,
        textBoxShadowOffsetX: 0,
        textBoxShadowOffsetY: 0,
        transformText: !1,
        textRotation: 0,
        textOrigin: null,
        textBackgroundColor: null,
        textBorderColor: null,
        textBorderWidth: 0,
        textBorderRadius: 0,
        textPadding: null,
        rich: null,
        truncate: null,
        blend: null,
        bind: function(t, e, n) {
            var i = this, r = n && n.style, a = !r || t.__attrCachedBy !== yd.STYLE_BIND;
            t.__attrCachedBy = yd.STYLE_BIND;
            for (var o = 0; o < xd.length; o++) {
                var s = xd[o], l = s[0];
                (a || i[l] !== r[l]) && (t[l] = md(t, l, i[l] || s[1]));
            }
            if ((a || i.fill !== r.fill) && (t.fillStyle = i.fill), (a || i.stroke !== r.stroke) && (t.strokeStyle = i.stroke), 
            (a || i.opacity !== r.opacity) && (t.globalAlpha = null == i.opacity ? 1 : i.opacity), 
            (a || i.blend !== r.blend) && (t.globalCompositeOperation = i.blend || "source-over"), 
            this.hasStroke()) {
                var u = i.lineWidth;
                t.lineWidth = u / (this.strokeNoScale && e && e.getLineScale ? e.getLineScale() : 1);
            }
        },
        hasFill: function() {
            var t = this.fill;
            return null != t && "none" !== t;
        },
        hasStroke: function() {
            var t = this.stroke;
            return null != t && "none" !== t && this.lineWidth > 0;
        },
        extendFrom: function(t, e) {
            if (t) for (var n in t) !t.hasOwnProperty(n) || e !== !0 && (e === !1 ? this.hasOwnProperty(n) : null == t[n]) || (this[n] = t[n]);
        },
        set: function(t, e) {
            "string" == typeof t ? this[t] = e : this.extendFrom(t, !0);
        },
        clone: function() {
            var t = new this.constructor();
            return t.extendFrom(this, !0), t;
        },
        getGradient: function(t, e, n) {
            for (var i = "radial" === e.type ? On : Pn, r = i(t, e, n), a = e.colorStops, o = 0; o < a.length; o++) r.addColorStop(a[o].offset, a[o].color);
            return r;
        }
    };
    for (var bd = wd.prototype, Sd = 0; Sd < xd.length; Sd++) {
        var Md = xd[Sd];
        Md[0] in bd || (bd[Md[0]] = Md[1]);
    }
    wd.getGradient = bd.getGradient;
    var Td = function(t, e) {
        this.image = t, this.repeat = e, this.type = "pattern";
    };
    Td.prototype.getCanvasPattern = function(t) {
        return t.createPattern(this.image, this.repeat || "repeat");
    };
    var Cd = function(t, e, n) {
        var i;
        n = n || rd, "string" == typeof t ? i = En(t, e, n) : S(t) && (i = t, t = i.id), 
        this.id = t, this.dom = i;
        var r = i.style;
        r && (i.onselectstart = Ln, r["-webkit-user-select"] = "none", r["user-select"] = "none", 
        r["-webkit-touch-callout"] = "none", r["-webkit-tap-highlight-color"] = "rgba(0,0,0,0)", 
        r.padding = 0, r.margin = 0, r["border-width"] = 0), this.domBack = null, this.ctxBack = null, 
        this.painter = e, this.config = null, this.clearColor = 0, this.motionBlur = !1, 
        this.lastFrameAlpha = .7, this.dpr = n;
    };
    Cd.prototype = {
        constructor: Cd,
        __dirty: !0,
        __used: !1,
        __drawIndex: 0,
        __startIndex: 0,
        __endIndex: 0,
        incremental: !1,
        getElementCount: function() {
            return this.__endIndex - this.__startIndex;
        },
        initContext: function() {
            this.ctx = this.dom.getContext("2d"), this.ctx.dpr = this.dpr;
        },
        createBackBuffer: function() {
            var t = this.dpr;
            this.domBack = En("back-" + this.id, this.painter, t), this.ctxBack = this.domBack.getContext("2d"), 
            1 !== t && this.ctxBack.scale(t, t);
        },
        resize: function(t, e) {
            var n = this.dpr, i = this.dom, r = i.style, a = this.domBack;
            r && (r.width = t + "px", r.height = e + "px"), i.width = t * n, i.height = e * n, 
            a && (a.width = t * n, a.height = e * n, 1 !== n && this.ctxBack.scale(n, n));
        },
        clear: function(t, e) {
            var n = this.dom, i = this.ctx, r = n.width, a = n.height, e = e || this.clearColor, o = this.motionBlur && !t, s = this.lastFrameAlpha, l = this.dpr;
            if (o && (this.domBack || this.createBackBuffer(), this.ctxBack.globalCompositeOperation = "copy", 
            this.ctxBack.drawImage(n, 0, 0, r / l, a / l)), i.clearRect(0, 0, r, a), e && "transparent" !== e) {
                var u;
                e.colorStops ? (u = e.__canvasGradient || wd.getGradient(i, e, {
                    x: 0,
                    y: 0,
                    width: r,
                    height: a
                }), e.__canvasGradient = u) : e.image && (u = Td.prototype.getCanvasPattern.call(e, i)), 
                i.save(), i.fillStyle = u || e, i.fillRect(0, 0, r, a), i.restore();
            }
            if (o) {
                var h = this.domBack;
                i.save(), i.globalAlpha = s, i.drawImage(h, 0, 0, r, a), i.restore();
            }
        }
    };
    var kd = "undefined" != typeof window && (window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.msRequestAnimationFrame && window.msRequestAnimationFrame.bind(window) || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame) || function(t) {
        setTimeout(t, 16);
    }, Id = new jf(50), Dd = {}, Ad = 0, Pd = 5e3, Od = /\{([a-zA-Z0-9_]+)\|([^}]*)\}/g, Ld = "12px sans-serif", Ed = {};
    Ed.measureText = function(t, e) {
        var n = l();
        return n.font = e || Ld, n.measureText(t);
    };
    var Bd = Ld, zd = {
        left: 1,
        right: 1,
        center: 1
    }, Rd = {
        top: 1,
        bottom: 1,
        middle: 1
    }, Fd = [ [ "textShadowBlur", "shadowBlur", 0 ], [ "textShadowOffsetX", "shadowOffsetX", 0 ], [ "textShadowOffsetY", "shadowOffsetY", 0 ], [ "textShadowColor", "shadowColor", "transparent" ] ], Nd = {}, Vd = {}, Hd = new wn(), Wd = function() {};
    Wd.prototype = {
        constructor: Wd,
        drawRectText: function(t, e) {
            var n = this.style;
            e = n.textRect || e, this.__dirty && ii(n, !0);
            var i = n.text;
            if (null != i && (i += ""), xi(i, n)) {
                t.save();
                var r = this.transform;
                n.transformText ? this.setTransform(t) : r && (Hd.copy(e), Hd.applyTransform(r), 
                e = Hd), ai(this, t, i, n, e, _d), t.restore();
            }
        }
    }, wi.prototype = {
        constructor: wi,
        type: "displayable",
        __dirty: !0,
        invisible: !1,
        z: 0,
        z2: 0,
        zlevel: 0,
        draggable: !1,
        dragging: !1,
        silent: !1,
        culling: !1,
        cursor: "pointer",
        rectHover: !1,
        progressive: !1,
        incremental: !1,
        globalScaleRatio: 1,
        beforeBrush: function() {},
        afterBrush: function() {},
        brush: function() {},
        getBoundingRect: function() {},
        contain: function(t, e) {
            return this.rectContain(t, e);
        },
        traverse: function(t, e) {
            t.call(e, this);
        },
        rectContain: function(t, e) {
            var n = this.transformCoordToLocal(t, e), i = this.getBoundingRect();
            return i.contain(n[0], n[1]);
        },
        dirty: function() {
            this.__dirty = this.__dirtyText = !0, this._rect = null, this.__zr && this.__zr.refresh();
        },
        animateStyle: function(t) {
            return this.animate("style", t);
        },
        attrKV: function(t, e) {
            "style" !== t ? ld.prototype.attrKV.call(this, t, e) : this.style.set(e);
        },
        setStyle: function(t, e) {
            return this.style.set(t, e), this.dirty(!1), this;
        },
        useStyle: function(t) {
            return this.style = new wd(t, this), this.dirty(!1), this;
        },
        calculateTextPosition: null
    }, h(wi, ld), c(wi, Wd), bi.prototype = {
        constructor: bi,
        type: "image",
        brush: function(t, e) {
            var n = this.style, i = n.image;
            n.bind(t, this, e);
            var r = this._image = zn(i, this._image, this, this.onload);
            if (r && Fn(r)) {
                var a = n.x || 0, o = n.y || 0, s = n.width, l = n.height, u = r.width / r.height;
                if (null == s && null != l ? s = l * u : null == l && null != s ? l = s / u : null == s && null == l && (s = r.width, 
                l = r.height), this.setTransform(t), n.sWidth && n.sHeight) {
                    var h = n.sx || 0, c = n.sy || 0;
                    t.drawImage(r, h, c, n.sWidth, n.sHeight, a, o, s, l);
                } else if (n.sx && n.sy) {
                    var h = n.sx, c = n.sy, f = s - h, d = l - c;
                    t.drawImage(r, h, c, f, d, a, o, s, l);
                } else t.drawImage(r, a, o, s, l);
                null != n.text && (this.restoreTransform(t), this.drawRectText(t, this.getBoundingRect()));
            }
        },
        getBoundingRect: function() {
            var t = this.style;
            return this._rect || (this._rect = new wn(t.x || 0, t.y || 0, t.width || 0, t.height || 0)), 
            this._rect;
        }
    }, h(bi, wi);
    var Gd = 1e5, Xd = 314159, qd = .01, jd = .001, Ud = new wn(0, 0, 0, 0), Yd = new wn(0, 0, 0, 0), Zd = function(t, e, n) {
        this.type = "canvas";
        var i = !t.nodeName || "CANVAS" === t.nodeName.toUpperCase();
        this._opts = n = o({}, n || {}), this.dpr = n.devicePixelRatio || rd, this._singleCanvas = i, 
        this.root = t;
        var r = t.style;
        r && (r["-webkit-tap-highlight-color"] = "transparent", r["-webkit-user-select"] = r["user-select"] = r["-webkit-touch-callout"] = "none", 
        t.innerHTML = ""), this.storage = e;
        var a = this._zlevelList = [], s = this._layers = {};
        if (this._layerConfig = {}, this._needsManuallyCompositing = !1, i) {
            var l = t.width, u = t.height;
            null != n.width && (l = n.width), null != n.height && (u = n.height), this.dpr = n.devicePixelRatio || 1, 
            t.width = l * this.dpr, t.height = u * this.dpr, this._width = l, this._height = u;
            var h = new Cd(t, this, this.dpr);
            h.__builtin__ = !0, h.initContext(), s[Xd] = h, h.zlevel = Xd, a.push(Xd), this._domRoot = t;
        } else {
            this._width = this._getSize(0), this._height = this._getSize(1);
            var c = this._domRoot = Ii(this._width, this._height);
            t.appendChild(c);
        }
        this._hoverlayer = null, this._hoverElements = [];
    };
    Zd.prototype = {
        constructor: Zd,
        getType: function() {
            return "canvas";
        },
        isSingleCanvas: function() {
            return this._singleCanvas;
        },
        getViewportRoot: function() {
            return this._domRoot;
        },
        getViewportRootOffset: function() {
            var t = this.getViewportRoot();
            return t ? {
                offsetLeft: t.offsetLeft || 0,
                offsetTop: t.offsetTop || 0
            } : void 0;
        },
        refresh: function(t) {
            var e = this.storage.getDisplayList(!0), n = this._zlevelList;
            this._redrawId = Math.random(), this._paintList(e, t, this._redrawId);
            for (var i = 0; i < n.length; i++) {
                var r = n[i], a = this._layers[r];
                if (!a.__builtin__ && a.refresh) {
                    var o = 0 === i ? this._backgroundColor : null;
                    a.refresh(o);
                }
            }
            return this.refreshHover(), this;
        },
        addHover: function(t, e) {
            if (!t.__hoverMir) {
                var n = new t.constructor({
                    style: t.style,
                    shape: t.shape,
                    z: t.z,
                    z2: t.z2,
                    silent: t.silent
                });
                return n.__from = t, t.__hoverMir = n, e && n.setStyle(e), this._hoverElements.push(n), 
                n;
            }
        },
        removeHover: function(t) {
            var e = t.__hoverMir, n = this._hoverElements, i = u(n, e);
            i >= 0 && n.splice(i, 1), t.__hoverMir = null;
        },
        clearHover: function() {
            for (var t = this._hoverElements, e = 0; e < t.length; e++) {
                var n = t[e].__from;
                n && (n.__hoverMir = null);
            }
            t.length = 0;
        },
        refreshHover: function() {
            var t = this._hoverElements, e = t.length, n = this._hoverlayer;
            if (n && n.clear(), e) {
                Dn(t, this.storage.displayableSortFunc), n || (n = this._hoverlayer = this.getLayer(Gd));
                var i = {};
                n.ctx.save();
                for (var r = 0; e > r; ) {
                    var a = t[r], o = a.__from;
                    o && o.__zr ? (r++, o.invisible || (a.transform = o.transform, a.invTransform = o.invTransform, 
                    a.__clipPaths = o.__clipPaths, this._doPaintEl(a, n, !0, i))) : (t.splice(r, 1), 
                    o.__hoverMir = null, e--);
                }
                n.ctx.restore();
            }
        },
        getHoverLayer: function() {
            return this.getLayer(Gd);
        },
        _paintList: function(t, e, n) {
            if (this._redrawId === n) {
                e = e || !1, this._updateLayerStatus(t);
                var i = this._doPaintList(t, e);
                if (this._needsManuallyCompositing && this._compositeManually(), !i) {
                    var r = this;
                    kd(function() {
                        r._paintList(t, e, n);
                    });
                }
            }
        },
        _compositeManually: function() {
            var t = this.getLayer(Xd).ctx, e = this._domRoot.width, n = this._domRoot.height;
            t.clearRect(0, 0, e, n), this.eachBuiltinLayer(function(i) {
                i.virtual && t.drawImage(i.dom, 0, 0, e, n);
            });
        },
        _doPaintList: function(t, e) {
            for (var n = [], i = 0; i < this._zlevelList.length; i++) {
                var r = this._zlevelList[i], a = this._layers[r];
                a.__builtin__ && a !== this._hoverlayer && (a.__dirty || e) && n.push(a);
            }
            for (var o = !0, s = 0; s < n.length; s++) {
                var a = n[s], l = a.ctx, u = {};
                l.save();
                var h = e ? a.__startIndex : a.__drawIndex, c = !e && a.incremental && Date.now, f = c && Date.now(), p = a.zlevel === this._zlevelList[0] ? this._backgroundColor : null;
                if (a.__startIndex === a.__endIndex) a.clear(!1, p); else if (h === a.__startIndex) {
                    var g = t[h];
                    g.incremental && g.notClear && !e || a.clear(!1, p);
                }
                -1 === h && (console.error("For some unknown reason. drawIndex is -1"), h = a.__startIndex);
                for (var v = h; v < a.__endIndex; v++) {
                    var m = t[v];
                    if (this._doPaintEl(m, a, e, u), m.__dirty = m.__dirtyText = !1, c) {
                        var y = Date.now() - f;
                        if (y > 15) break;
                    }
                }
                a.__drawIndex = v, a.__drawIndex < a.__endIndex && (o = !1), u.prevElClipPaths && l.restore(), 
                l.restore();
            }
            return Qc.wxa && d(this._layers, function(t) {
                t && t.ctx && t.ctx.draw && t.ctx.draw();
            }), o;
        },
        _doPaintEl: function(t, e, n, i) {
            var r = e.ctx, a = t.transform;
            if (!(!e.__dirty && !n || t.invisible || 0 === t.style.opacity || a && !a[0] && !a[3] || t.culling && Ti(t, this._width, this._height))) {
                var o = t.__clipPaths, s = i.prevElClipPaths;
                (!s || Ci(o, s)) && (s && (r.restore(), i.prevElClipPaths = null, i.prevEl = null), 
                o && (r.save(), ki(o, r), i.prevElClipPaths = o)), t.beforeBrush && t.beforeBrush(r), 
                t.brush(r, i.prevEl || null), i.prevEl = t, t.afterBrush && t.afterBrush(r);
            }
        },
        getLayer: function(t, e) {
            this._singleCanvas && !this._needsManuallyCompositing && (t = Xd);
            var n = this._layers[t];
            return n || (n = new Cd("zr_" + t, this, this.dpr), n.zlevel = t, n.__builtin__ = !0, 
            this._layerConfig[t] && r(n, this._layerConfig[t], !0), e && (n.virtual = e), this.insertLayer(t, n), 
            n.initContext()), n;
        },
        insertLayer: function(t, e) {
            var n = this._layers, i = this._zlevelList, r = i.length, a = null, o = -1, s = this._domRoot;
            if (n[t]) return void od("ZLevel " + t + " has been used already");
            if (!Mi(e)) return void od("Layer of zlevel " + t + " is not valid");
            if (r > 0 && t > i[0]) {
                for (o = 0; r - 1 > o && !(i[o] < t && i[o + 1] > t); o++) ;
                a = n[i[o]];
            }
            if (i.splice(o + 1, 0, t), n[t] = e, !e.virtual) if (a) {
                var l = a.dom;
                l.nextSibling ? s.insertBefore(e.dom, l.nextSibling) : s.appendChild(e.dom);
            } else s.firstChild ? s.insertBefore(e.dom, s.firstChild) : s.appendChild(e.dom);
        },
        eachLayer: function(t, e) {
            var n, i, r = this._zlevelList;
            for (i = 0; i < r.length; i++) n = r[i], t.call(e, this._layers[n], n);
        },
        eachBuiltinLayer: function(t, e) {
            var n, i, r, a = this._zlevelList;
            for (r = 0; r < a.length; r++) i = a[r], n = this._layers[i], n.__builtin__ && t.call(e, n, i);
        },
        eachOtherLayer: function(t, e) {
            var n, i, r, a = this._zlevelList;
            for (r = 0; r < a.length; r++) i = a[r], n = this._layers[i], n.__builtin__ || t.call(e, n, i);
        },
        getLayers: function() {
            return this._layers;
        },
        _updateLayerStatus: function(t) {
            function e(t) {
                r && (r.__endIndex !== t && (r.__dirty = !0), r.__endIndex = t);
            }
            if (this.eachBuiltinLayer(function(t) {
                t.__dirty = t.__used = !1;
            }), this._singleCanvas) for (var n = 1; n < t.length; n++) {
                var i = t[n];
                if (i.zlevel !== t[n - 1].zlevel || i.incremental) {
                    this._needsManuallyCompositing = !0;
                    break;
                }
            }
            for (var r = null, a = 0, n = 0; n < t.length; n++) {
                var o, i = t[n], s = i.zlevel;
                i.incremental ? (o = this.getLayer(s + jd, this._needsManuallyCompositing), o.incremental = !0, 
                a = 1) : o = this.getLayer(s + (a > 0 ? qd : 0), this._needsManuallyCompositing), 
                o.__builtin__ || od("ZLevel " + s + " has been used by unkown layer " + o.id), o !== r && (o.__used = !0, 
                o.__startIndex !== n && (o.__dirty = !0), o.__startIndex = n, o.__drawIndex = o.incremental ? -1 : n, 
                e(n), r = o), i.__dirty && (o.__dirty = !0, o.incremental && o.__drawIndex < 0 && (o.__drawIndex = n));
            }
            e(n), this.eachBuiltinLayer(function(t) {
                !t.__used && t.getElementCount() > 0 && (t.__dirty = !0, t.__startIndex = t.__endIndex = t.__drawIndex = 0), 
                t.__dirty && t.__drawIndex < 0 && (t.__drawIndex = t.__startIndex);
            });
        },
        clear: function() {
            return this.eachBuiltinLayer(this._clearLayer), this;
        },
        _clearLayer: function(t) {
            t.clear();
        },
        setBackgroundColor: function(t) {
            this._backgroundColor = t;
        },
        configLayer: function(t, e) {
            if (e) {
                var n = this._layerConfig;
                n[t] ? r(n[t], e, !0) : n[t] = e;
                for (var i = 0; i < this._zlevelList.length; i++) {
                    var a = this._zlevelList[i];
                    if (a === t || a === t + qd) {
                        var o = this._layers[a];
                        r(o, n[t], !0);
                    }
                }
            }
        },
        delLayer: function(t) {
            var e = this._layers, n = this._zlevelList, i = e[t];
            i && (i.dom.parentNode.removeChild(i.dom), delete e[t], n.splice(u(n, t), 1));
        },
        resize: function(t, e) {
            if (this._domRoot.style) {
                var n = this._domRoot;
                n.style.display = "none";
                var i = this._opts;
                if (null != t && (i.width = t), null != e && (i.height = e), t = this._getSize(0), 
                e = this._getSize(1), n.style.display = "", this._width !== t || e !== this._height) {
                    n.style.width = t + "px", n.style.height = e + "px";
                    for (var r in this._layers) this._layers.hasOwnProperty(r) && this._layers[r].resize(t, e);
                    d(this._progressiveLayers, function(n) {
                        n.resize(t, e);
                    }), this.refresh(!0);
                }
                this._width = t, this._height = e;
            } else {
                if (null == t || null == e) return;
                this._width = t, this._height = e, this.getLayer(Xd).resize(t, e);
            }
            return this;
        },
        clearLayer: function(t) {
            var e = this._layers[t];
            e && e.clear();
        },
        dispose: function() {
            this.root.innerHTML = "", this.root = this.storage = this._domRoot = this._layers = null;
        },
        getRenderedCanvas: function(t) {
            if (t = t || {}, this._singleCanvas && !this._compositeManually) return this._layers[Xd].dom;
            var e = new Cd("image", this, t.pixelRatio || this.dpr);
            if (e.initContext(), e.clear(!1, t.backgroundColor || this._backgroundColor), t.pixelRatio <= this.dpr) {
                this.refresh();
                var n = e.dom.width, i = e.dom.height, r = e.ctx;
                this.eachLayer(function(t) {
                    t.__builtin__ ? r.drawImage(t.dom, 0, 0, n, i) : t.renderToCanvas && (e.ctx.save(), 
                    t.renderToCanvas(e.ctx), e.ctx.restore());
                });
            } else for (var a = {}, o = this.storage.getDisplayList(!0), s = 0; s < o.length; s++) {
                var l = o[s];
                this._doPaintEl(l, e, !0, a);
            }
            return e.dom;
        },
        getWidth: function() {
            return this._width;
        },
        getHeight: function() {
            return this._height;
        },
        _getSize: function(t) {
            var e = this._opts, n = [ "width", "height" ][t], i = [ "clientWidth", "clientHeight" ][t], r = [ "paddingLeft", "paddingTop" ][t], a = [ "paddingRight", "paddingBottom" ][t];
            if (null != e[n] && "auto" !== e[n]) return parseFloat(e[n]);
            var o = this.root, s = document.defaultView.getComputedStyle(o);
            return (o[i] || Si(s[n]) || Si(o.style[n])) - (Si(s[r]) || 0) - (Si(s[a]) || 0) | 0;
        },
        pathToImage: function(t, e) {
            e = e || this.dpr;
            var n = document.createElement("canvas"), i = n.getContext("2d"), r = t.getBoundingRect(), a = t.style, o = a.shadowBlur * e, s = a.shadowOffsetX * e, l = a.shadowOffsetY * e, u = a.hasStroke() ? a.lineWidth : 0, h = Math.max(u / 2, -s + o), c = Math.max(u / 2, s + o), f = Math.max(u / 2, -l + o), d = Math.max(u / 2, l + o), p = r.width + h + c, g = r.height + f + d;
            n.width = p * e, n.height = g * e, i.scale(e, e), i.clearRect(0, 0, p, g), i.dpr = e;
            var v = {
                position: t.position,
                rotation: t.rotation,
                scale: t.scale
            };
            t.position = [ h - r.x, f - r.y ], t.rotation = 0, t.scale = [ 1, 1 ], t.updateTransform(), 
            t && t.brush(i);
            var m = bi, y = new m({
                style: {
                    x: 0,
                    y: 0,
                    image: n
                }
            });
            return null != v.position && (y.position = t.position = v.position), null != v.rotation && (y.rotation = t.rotation = v.rotation), 
            null != v.scale && (y.scale = t.scale = v.scale), y;
        }
    };
    var $d = function(t) {
        t = t || {}, this.stage = t.stage || {}, this.onframe = t.onframe || function() {}, 
        this._clips = [], this._running = !1, this._time, this._pausedTime, this._pauseStart, 
        this._paused = !1, wf.call(this);
    };
    $d.prototype = {
        constructor: $d,
        addClip: function(t) {
            this._clips.push(t);
        },
        addAnimator: function(t) {
            t.animation = this;
            for (var e = t.getClips(), n = 0; n < e.length; n++) this.addClip(e[n]);
        },
        removeClip: function(t) {
            var e = u(this._clips, t);
            e >= 0 && this._clips.splice(e, 1);
        },
        removeAnimator: function(t) {
            for (var e = t.getClips(), n = 0; n < e.length; n++) this.removeClip(e[n]);
            t.animation = null;
        },
        _update: function() {
            for (var t = new Date().getTime() - this._pausedTime, e = t - this._time, n = this._clips, i = n.length, r = [], a = [], o = 0; i > o; o++) {
                var s = n[o], l = s.step(t, e);
                l && (r.push(l), a.push(s));
            }
            for (var o = 0; i > o; ) n[o]._needsRemove ? (n[o] = n[i - 1], n.pop(), i--) : o++;
            i = r.length;
            for (var o = 0; i > o; o++) a[o].fire(r[o]);
            this._time = t, this.onframe(e), this.trigger("frame", e), this.stage.update && this.stage.update();
        },
        _startLoop: function() {
            function t() {
                e._running && (kd(t), !e._paused && e._update());
            }
            var e = this;
            this._running = !0, kd(t);
        },
        start: function() {
            this._time = new Date().getTime(), this._pausedTime = 0, this._startLoop();
        },
        stop: function() {
            this._running = !1;
        },
        pause: function() {
            this._paused || (this._pauseStart = new Date().getTime(), this._paused = !0);
        },
        resume: function() {
            this._paused && (this._pausedTime += new Date().getTime() - this._pauseStart, this._paused = !1);
        },
        clear: function() {
            this._clips = [];
        },
        isFinished: function() {
            return !this._clips.length;
        },
        animate: function(t, e) {
            e = e || {};
            var n = new ed(t, e.loop, e.getter, e.setter);
            return this.addAnimator(n), n;
        }
    }, c($d, wf);
    var Kd = 300, Qd = [ "click", "dblclick", "mousewheel", "mouseout", "mouseup", "mousedown", "mousemove", "contextmenu" ], Jd = [ "touchstart", "touchend", "touchmove" ], tp = {
        pointerdown: 1,
        pointerup: 1,
        pointermove: 1,
        pointerout: 1
    }, ep = p(Qd, function(t) {
        var e = t.replace("mouse", "pointer");
        return tp[e] ? e : t;
    }), np = {
        mousemove: function(t) {
            t = ye(this.dom, t), this.trigger("mousemove", t);
        },
        mouseout: function(t) {
            t = ye(this.dom, t);
            var e = t.toElement || t.relatedTarget;
            if (e !== this.dom) for (;e && 9 !== e.nodeType; ) {
                if (e === this.dom) return;
                e = e.parentNode;
            }
            this.trigger("mouseout", t);
        },
        touchstart: function(t) {
            t = ye(this.dom, t), t.zrByTouch = !0, this._lastTouchMoment = new Date(), this.handler.processGesture(this, t, "start"), 
            np.mousemove.call(this, t), np.mousedown.call(this, t), Ai(this);
        },
        touchmove: function(t) {
            t = ye(this.dom, t), t.zrByTouch = !0, this.handler.processGesture(this, t, "change"), 
            np.mousemove.call(this, t), Ai(this);
        },
        touchend: function(t) {
            t = ye(this.dom, t), t.zrByTouch = !0, this.handler.processGesture(this, t, "end"), 
            np.mouseup.call(this, t), +new Date() - this._lastTouchMoment < Kd && np.click.call(this, t), 
            Ai(this);
        },
        pointerdown: function(t) {
            np.mousedown.call(this, t);
        },
        pointermove: function(t) {
            Pi(t) || np.mousemove.call(this, t);
        },
        pointerup: function(t) {
            np.mouseup.call(this, t);
        },
        pointerout: function(t) {
            Pi(t) || np.mouseout.call(this, t);
        }
    };
    d([ "click", "mousedown", "mouseup", "mousewheel", "dblclick", "contextmenu" ], function(t) {
        np[t] = function(e) {
            e = ye(this.dom, e), this.trigger(t, e);
        };
    });
    var ip = Li.prototype;
    ip.dispose = function() {
        for (var t = Qd.concat(Jd), e = 0; e < t.length; e++) {
            var n = t[e];
            xe(this.dom, Di(n), this._handlers[n]);
        }
    }, ip.setCursor = function(t) {
        this.dom.style && (this.dom.style.cursor = t || "default");
    }, c(Li, wf);
    var rp = !Qc.canvasSupported, ap = {
        canvas: Zd
    }, op = {}, sp = "4.1.1", lp = function(t, e, n) {
        n = n || {}, this.dom = e, this.id = t;
        var i = this, r = new gd(), a = n.renderer;
        if (rp) {
            if (!ap.vml) throw new Error("You need to require 'zrender/vml/vml' to support IE8");
            a = "vml";
        } else a && ap[a] || (a = "canvas");
        var o = new ap[a](e, r, n, t);
        this.storage = r, this.painter = o;
        var s = Qc.node || Qc.worker ? null : new Li(o.getViewportRoot());
        this.handler = new Of(r, o, s, o.root), this.animation = new $d({
            stage: {
                update: y(this.flush, this)
            }
        }), this.animation.start(), this._needsRefresh;
        var l = r.delFromStorage, u = r.addToStorage;
        r.delFromStorage = function(t) {
            l.call(r, t), t && t.removeSelfFromZr(i);
        }, r.addToStorage = function(t) {
            u.call(r, t), t.addSelfToZr(i);
        };
    };
    lp.prototype = {
        constructor: lp,
        getId: function() {
            return this.id;
        },
        add: function(t) {
            this.storage.addRoot(t), this._needsRefresh = !0;
        },
        remove: function(t) {
            this.storage.delRoot(t), this._needsRefresh = !0;
        },
        configLayer: function(t, e) {
            this.painter.configLayer && this.painter.configLayer(t, e), this._needsRefresh = !0;
        },
        setBackgroundColor: function(t) {
            this.painter.setBackgroundColor && this.painter.setBackgroundColor(t), this._needsRefresh = !0;
        },
        refreshImmediately: function() {
            this._needsRefresh = this._needsRefreshHover = !1, this.painter.refresh(), this._needsRefresh = this._needsRefreshHover = !1;
        },
        refresh: function() {
            this._needsRefresh = !0;
        },
        flush: function() {
            var t;
            this._needsRefresh && (t = !0, this.refreshImmediately()), this._needsRefreshHover && (t = !0, 
            this.refreshHoverImmediately()), t && this.trigger("rendered");
        },
        addHover: function(t, e) {
            if (this.painter.addHover) {
                var n = this.painter.addHover(t, e);
                return this.refreshHover(), n;
            }
        },
        removeHover: function(t) {
            this.painter.removeHover && (this.painter.removeHover(t), this.refreshHover());
        },
        clearHover: function() {
            this.painter.clearHover && (this.painter.clearHover(), this.refreshHover());
        },
        refreshHover: function() {
            this._needsRefreshHover = !0;
        },
        refreshHoverImmediately: function() {
            this._needsRefreshHover = !1, this.painter.refreshHover && this.painter.refreshHover();
        },
        resize: function(t) {
            t = t || {}, this.painter.resize(t.width, t.height), this.handler.resize();
        },
        clearAnimation: function() {
            this.animation.clear();
        },
        getWidth: function() {
            return this.painter.getWidth();
        },
        getHeight: function() {
            return this.painter.getHeight();
        },
        pathToImage: function(t, e) {
            return this.painter.pathToImage(t, e);
        },
        setCursorStyle: function(t) {
            this.handler.setCursorStyle(t);
        },
        findHover: function(t, e) {
            return this.handler.findHover(t, e);
        },
        on: function(t, e, n) {
            this.handler.on(t, e, n);
        },
        off: function(t, e) {
            this.handler.off(t, e);
        },
        trigger: function(t, e) {
            this.handler.trigger(t, e);
        },
        clear: function() {
            this.storage.delRoot(), this.painter.clear();
        },
        dispose: function() {
            this.animation.stop(), this.clear(), this.storage.dispose(), this.painter.dispose(), 
            this.handler.dispose(), this.animation = this.storage = this.painter = this.handler = null, 
            Fi(this.id);
        }
    };
    var up = (Object.freeze || Object)({
        version: sp,
        init: Ei,
        dispose: Bi,
        getInstance: zi,
        registerPainter: Ri
    }), hp = d, cp = S, fp = x, dp = "series\0", pp = [ "fontStyle", "fontWeight", "fontSize", "fontFamily", "rich", "tag", "color", "textBorderColor", "textBorderWidth", "width", "height", "lineHeight", "align", "verticalAlign", "baseline", "shadowColor", "shadowBlur", "shadowOffsetX", "shadowOffsetY", "textShadowColor", "textShadowBlur", "textShadowOffsetX", "textShadowOffsetY", "backgroundColor", "borderColor", "borderWidth", "borderRadius", "padding" ], gp = 0, vp = ".", mp = "___EC__COMPONENT__CONTAINER___", yp = 0, _p = function(t) {
        for (var e = 0; e < t.length; e++) t[e][1] || (t[e][1] = t[e][0]);
        return function(e, n, i) {
            for (var r = {}, a = 0; a < t.length; a++) {
                var o = t[a][1];
                if (!(n && u(n, o) >= 0 || i && u(i, o) < 0)) {
                    var s = e.getShallow(o);
                    null != s && (r[t[a][0]] = s);
                }
            }
            return r;
        };
    }, xp = _p([ [ "lineWidth", "width" ], [ "stroke", "color" ], [ "opacity" ], [ "shadowBlur" ], [ "shadowOffsetX" ], [ "shadowOffsetY" ], [ "shadowColor" ] ]), wp = {
        getLineStyle: function(t) {
            var e = xp(this, t);
            return e.lineDash = this.getLineDash(e.lineWidth), e;
        },
        getLineDash: function(t) {
            null == t && (t = 1);
            var e = this.get("type"), n = Math.max(t, 2), i = 4 * t;
            return "solid" === e || null == e ? !1 : "dashed" === e ? [ i, i ] : [ n, n ];
        }
    }, bp = _p([ [ "fill", "color" ], [ "shadowBlur" ], [ "shadowOffsetX" ], [ "shadowOffsetY" ], [ "opacity" ], [ "shadowColor" ] ]), Sp = {
        getAreaStyle: function(t, e) {
            return bp(this, t, e);
        }
    }, Mp = Math.pow, Tp = Math.sqrt, Cp = 1e-8, kp = 1e-4, Ip = Tp(3), Dp = 1 / 3, Ap = H(), Pp = H(), Op = H(), Lp = Math.min, Ep = Math.max, Bp = Math.sin, zp = Math.cos, Rp = 2 * Math.PI, Fp = H(), Np = H(), Vp = H(), Hp = [], Wp = [], Gp = {
        M: 1,
        L: 2,
        C: 3,
        Q: 4,
        A: 5,
        Z: 6,
        R: 7
    }, Xp = [], qp = [], jp = [], Up = [], Yp = Math.min, Zp = Math.max, $p = Math.cos, Kp = Math.sin, Qp = Math.sqrt, Jp = Math.abs, tg = "undefined" != typeof Float32Array, eg = function(t) {
        this._saveData = !t, this._saveData && (this.data = []), this._ctx = null;
    };
    eg.prototype = {
        constructor: eg,
        _xi: 0,
        _yi: 0,
        _x0: 0,
        _y0: 0,
        _ux: 0,
        _uy: 0,
        _len: 0,
        _lineDash: null,
        _dashOffset: 0,
        _dashIdx: 0,
        _dashSum: 0,
        setScale: function(t, e, n) {
            n = n || 0, this._ux = Jp(n / rd / t) || 0, this._uy = Jp(n / rd / e) || 0;
        },
        getContext: function() {
            return this._ctx;
        },
        beginPath: function(t) {
            return this._ctx = t, t && t.beginPath(), t && (this.dpr = t.dpr), this._saveData && (this._len = 0), 
            this._lineDash && (this._lineDash = null, this._dashOffset = 0), this;
        },
        moveTo: function(t, e) {
            return this.addData(Gp.M, t, e), this._ctx && this._ctx.moveTo(t, e), this._x0 = t, 
            this._y0 = e, this._xi = t, this._yi = e, this;
        },
        lineTo: function(t, e) {
            var n = Jp(t - this._xi) > this._ux || Jp(e - this._yi) > this._uy || this._len < 5;
            return this.addData(Gp.L, t, e), this._ctx && n && (this._needsDash() ? this._dashedLineTo(t, e) : this._ctx.lineTo(t, e)), 
            n && (this._xi = t, this._yi = e), this;
        },
        bezierCurveTo: function(t, e, n, i, r, a) {
            return this.addData(Gp.C, t, e, n, i, r, a), this._ctx && (this._needsDash() ? this._dashedBezierTo(t, e, n, i, r, a) : this._ctx.bezierCurveTo(t, e, n, i, r, a)), 
            this._xi = r, this._yi = a, this;
        },
        quadraticCurveTo: function(t, e, n, i) {
            return this.addData(Gp.Q, t, e, n, i), this._ctx && (this._needsDash() ? this._dashedQuadraticTo(t, e, n, i) : this._ctx.quadraticCurveTo(t, e, n, i)), 
            this._xi = n, this._yi = i, this;
        },
        arc: function(t, e, n, i, r, a) {
            return this.addData(Gp.A, t, e, n, n, i, r - i, 0, a ? 0 : 1), this._ctx && this._ctx.arc(t, e, n, i, r, a), 
            this._xi = $p(r) * n + t, this._yi = Kp(r) * n + e, this;
        },
        arcTo: function(t, e, n, i, r) {
            return this._ctx && this._ctx.arcTo(t, e, n, i, r), this;
        },
        rect: function(t, e, n, i) {
            return this._ctx && this._ctx.rect(t, e, n, i), this.addData(Gp.R, t, e, n, i), 
            this;
        },
        closePath: function() {
            this.addData(Gp.Z);
            var t = this._ctx, e = this._x0, n = this._y0;
            return t && (this._needsDash() && this._dashedLineTo(e, n), t.closePath()), this._xi = e, 
            this._yi = n, this;
        },
        fill: function(t) {
            t && t.fill(), this.toStatic();
        },
        stroke: function(t) {
            t && t.stroke(), this.toStatic();
        },
        setLineDash: function(t) {
            if (t instanceof Array) {
                this._lineDash = t, this._dashIdx = 0;
                for (var e = 0, n = 0; n < t.length; n++) e += t[n];
                this._dashSum = e;
            }
            return this;
        },
        setLineDashOffset: function(t) {
            return this._dashOffset = t, this;
        },
        len: function() {
            return this._len;
        },
        setData: function(t) {
            var e = t.length;
            this.data && this.data.length === e || !tg || (this.data = new Float32Array(e));
            for (var n = 0; e > n; n++) this.data[n] = t[n];
            this._len = e;
        },
        appendPath: function(t) {
            t instanceof Array || (t = [ t ]);
            for (var e = t.length, n = 0, i = this._len, r = 0; e > r; r++) n += t[r].len();
            tg && this.data instanceof Float32Array && (this.data = new Float32Array(i + n));
            for (var r = 0; e > r; r++) for (var a = t[r].data, o = 0; o < a.length; o++) this.data[i++] = a[o];
            this._len = i;
        },
        addData: function(t) {
            if (this._saveData) {
                var e = this.data;
                this._len + arguments.length > e.length && (this._expandData(), e = this.data);
                for (var n = 0; n < arguments.length; n++) e[this._len++] = arguments[n];
                this._prevCmd = t;
            }
        },
        _expandData: function() {
            if (!(this.data instanceof Array)) {
                for (var t = [], e = 0; e < this._len; e++) t[e] = this.data[e];
                this.data = t;
            }
        },
        _needsDash: function() {
            return this._lineDash;
        },
        _dashedLineTo: function(t, e) {
            var n, i, r = this._dashSum, a = this._dashOffset, o = this._lineDash, s = this._ctx, l = this._xi, u = this._yi, h = t - l, c = e - u, f = Qp(h * h + c * c), d = l, p = u, g = o.length;
            for (h /= f, c /= f, 0 > a && (a = r + a), a %= r, d -= a * h, p -= a * c; h > 0 && t >= d || 0 > h && d >= t || 0 === h && (c > 0 && e >= p || 0 > c && p >= e); ) i = this._dashIdx, 
            n = o[i], d += h * n, p += c * n, this._dashIdx = (i + 1) % g, h > 0 && l > d || 0 > h && d > l || c > 0 && u > p || 0 > c && p > u || s[i % 2 ? "moveTo" : "lineTo"](h >= 0 ? Yp(d, t) : Zp(d, t), c >= 0 ? Yp(p, e) : Zp(p, e));
            h = d - t, c = p - e, this._dashOffset = -Qp(h * h + c * c);
        },
        _dashedBezierTo: function(t, e, n, i, r, a) {
            var o, s, l, u, h, c = this._dashSum, f = this._dashOffset, d = this._lineDash, p = this._ctx, g = this._xi, v = this._yi, m = ur, y = 0, _ = this._dashIdx, x = d.length, w = 0;
            for (0 > f && (f = c + f), f %= c, o = 0; 1 > o; o += .1) s = m(g, t, n, r, o + .1) - m(g, t, n, r, o), 
            l = m(v, e, i, a, o + .1) - m(v, e, i, a, o), y += Qp(s * s + l * l);
            for (;x > _ && (w += d[_], !(w > f)); _++) ;
            for (o = (w - f) / y; 1 >= o; ) u = m(g, t, n, r, o), h = m(v, e, i, a, o), _ % 2 ? p.moveTo(u, h) : p.lineTo(u, h), 
            o += d[_] / y, _ = (_ + 1) % x;
            _ % 2 !== 0 && p.lineTo(r, a), s = r - u, l = a - h, this._dashOffset = -Qp(s * s + l * l);
        },
        _dashedQuadraticTo: function(t, e, n, i) {
            var r = n, a = i;
            n = (n + 2 * t) / 3, i = (i + 2 * e) / 3, t = (this._xi + 2 * t) / 3, e = (this._yi + 2 * e) / 3, 
            this._dashedBezierTo(t, e, n, i, r, a);
        },
        toStatic: function() {
            var t = this.data;
            t instanceof Array && (t.length = this._len, tg && (this.data = new Float32Array(t)));
        },
        getBoundingRect: function() {
            Xp[0] = Xp[1] = jp[0] = jp[1] = Number.MAX_VALUE, qp[0] = qp[1] = Up[0] = Up[1] = -Number.MAX_VALUE;
            for (var t = this.data, e = 0, n = 0, i = 0, r = 0, a = 0; a < t.length; ) {
                var o = t[a++];
                switch (1 === a && (e = t[a], n = t[a + 1], i = e, r = n), o) {
                  case Gp.M:
                    i = t[a++], r = t[a++], e = i, n = r, jp[0] = i, jp[1] = r, Up[0] = i, Up[1] = r;
                    break;

                  case Gp.L:
                    br(e, n, t[a], t[a + 1], jp, Up), e = t[a++], n = t[a++];
                    break;

                  case Gp.C:
                    Sr(e, n, t[a++], t[a++], t[a++], t[a++], t[a], t[a + 1], jp, Up), e = t[a++], n = t[a++];
                    break;

                  case Gp.Q:
                    Mr(e, n, t[a++], t[a++], t[a], t[a + 1], jp, Up), e = t[a++], n = t[a++];
                    break;

                  case Gp.A:
                    var s = t[a++], l = t[a++], u = t[a++], h = t[a++], c = t[a++], f = t[a++] + c;
                    a += 1;
                    var d = 1 - t[a++];
                    1 === a && (i = $p(c) * u + s, r = Kp(c) * h + l), Tr(s, l, u, h, c, f, d, jp, Up), 
                    e = $p(f) * u + s, n = Kp(f) * h + l;
                    break;

                  case Gp.R:
                    i = e = t[a++], r = n = t[a++];
                    var p = t[a++], g = t[a++];
                    br(i, r, i + p, r + g, jp, Up);
                    break;

                  case Gp.Z:
                    e = i, n = r;
                }
                oe(Xp, Xp, jp), se(qp, qp, Up);
            }
            return 0 === a && (Xp[0] = Xp[1] = qp[0] = qp[1] = 0), new wn(Xp[0], Xp[1], qp[0] - Xp[0], qp[1] - Xp[1]);
        },
        rebuildPath: function(t) {
            for (var e, n, i, r, a, o, s = this.data, l = this._ux, u = this._uy, h = this._len, c = 0; h > c; ) {
                var f = s[c++];
                switch (1 === c && (i = s[c], r = s[c + 1], e = i, n = r), f) {
                  case Gp.M:
                    e = i = s[c++], n = r = s[c++], t.moveTo(i, r);
                    break;

                  case Gp.L:
                    a = s[c++], o = s[c++], (Jp(a - i) > l || Jp(o - r) > u || c === h - 1) && (t.lineTo(a, o), 
                    i = a, r = o);
                    break;

                  case Gp.C:
                    t.bezierCurveTo(s[c++], s[c++], s[c++], s[c++], s[c++], s[c++]), i = s[c - 2], r = s[c - 1];
                    break;

                  case Gp.Q:
                    t.quadraticCurveTo(s[c++], s[c++], s[c++], s[c++]), i = s[c - 2], r = s[c - 1];
                    break;

                  case Gp.A:
                    var d = s[c++], p = s[c++], g = s[c++], v = s[c++], m = s[c++], y = s[c++], _ = s[c++], x = s[c++], w = g > v ? g : v, b = g > v ? 1 : g / v, S = g > v ? v / g : 1, M = Math.abs(g - v) > .001, T = m + y;
                    M ? (t.translate(d, p), t.rotate(_), t.scale(b, S), t.arc(0, 0, w, m, T, 1 - x), 
                    t.scale(1 / b, 1 / S), t.rotate(-_), t.translate(-d, -p)) : t.arc(d, p, w, m, T, 1 - x), 
                    1 === c && (e = $p(m) * g + d, n = Kp(m) * v + p), i = $p(T) * g + d, r = Kp(T) * v + p;
                    break;

                  case Gp.R:
                    e = i = s[c], n = r = s[c + 1], t.rect(s[c++], s[c++], s[c++], s[c++]);
                    break;

                  case Gp.Z:
                    t.closePath(), i = e, r = n;
                }
            }
        }
    }, eg.CMD = Gp;
    var ng = 2 * Math.PI, ig = 2 * Math.PI, rg = eg.CMD, ag = 2 * Math.PI, og = 1e-4, sg = [ -1, -1, -1 ], lg = [ -1, -1 ], ug = Td.prototype.getCanvasPattern, hg = Math.abs, cg = new eg(!0);
    Vr.prototype = {
        constructor: Vr,
        type: "path",
        __dirtyPath: !0,
        strokeContainThreshold: 5,
        segmentIgnoreThreshold: 0,
        subPixelOptimize: !1,
        brush: function(t, e) {
            var n = this.style, i = this.path || cg, r = n.hasStroke(), a = n.hasFill(), o = n.fill, s = n.stroke, l = a && !!o.colorStops, u = r && !!s.colorStops, h = a && !!o.image, c = r && !!s.image;
            if (n.bind(t, this, e), this.setTransform(t), this.__dirty) {
                var f;
                l && (f = f || this.getBoundingRect(), this._fillGradient = n.getGradient(t, o, f)), 
                u && (f = f || this.getBoundingRect(), this._strokeGradient = n.getGradient(t, s, f));
            }
            l ? t.fillStyle = this._fillGradient : h && (t.fillStyle = ug.call(o, t)), u ? t.strokeStyle = this._strokeGradient : c && (t.strokeStyle = ug.call(s, t));
            var d = n.lineDash, p = n.lineDashOffset, g = !!t.setLineDash, v = this.getGlobalScale();
            if (i.setScale(v[0], v[1], this.segmentIgnoreThreshold), this.__dirtyPath || d && !g && r ? (i.beginPath(t), 
            d && !g && (i.setLineDash(d), i.setLineDashOffset(p)), this.buildPath(i, this.shape, !1), 
            this.path && (this.__dirtyPath = !1)) : (t.beginPath(), this.path.rebuildPath(t)), 
            a) if (null != n.fillOpacity) {
                var m = t.globalAlpha;
                t.globalAlpha = n.fillOpacity * n.opacity, i.fill(t), t.globalAlpha = m;
            } else i.fill(t);
            if (d && g && (t.setLineDash(d), t.lineDashOffset = p), r) if (null != n.strokeOpacity) {
                var m = t.globalAlpha;
                t.globalAlpha = n.strokeOpacity * n.opacity, i.stroke(t), t.globalAlpha = m;
            } else i.stroke(t);
            d && g && t.setLineDash([]), null != n.text && (this.restoreTransform(t), this.drawRectText(t, this.getBoundingRect()));
        },
        buildPath: function() {},
        createPathProxy: function() {
            this.path = new eg();
        },
        getBoundingRect: function() {
            var t = this._rect, e = this.style, n = !t;
            if (n) {
                var i = this.path;
                i || (i = this.path = new eg()), this.__dirtyPath && (i.beginPath(), this.buildPath(i, this.shape, !1)), 
                t = i.getBoundingRect();
            }
            if (this._rect = t, e.hasStroke()) {
                var r = this._rectWithStroke || (this._rectWithStroke = t.clone());
                if (this.__dirty || n) {
                    r.copy(t);
                    var a = e.lineWidth, o = e.strokeNoScale ? this.getLineScale() : 1;
                    e.hasFill() || (a = Math.max(a, this.strokeContainThreshold || 4)), o > 1e-10 && (r.width += a / o, 
                    r.height += a / o, r.x -= a / o / 2, r.y -= a / o / 2);
                }
                return r;
            }
            return t;
        },
        contain: function(t, e) {
            var n = this.transformCoordToLocal(t, e), i = this.getBoundingRect(), r = this.style;
            if (t = n[0], e = n[1], i.contain(t, e)) {
                var a = this.path.data;
                if (r.hasStroke()) {
                    var o = r.lineWidth, s = r.strokeNoScale ? this.getLineScale() : 1;
                    if (s > 1e-10 && (r.hasFill() || (o = Math.max(o, this.strokeContainThreshold)), 
                    Nr(a, o / s, t, e))) return !0;
                }
                if (r.hasFill()) return Fr(a, t, e);
            }
            return !1;
        },
        dirty: function(t) {
            null == t && (t = !0), t && (this.__dirtyPath = t, this._rect = null), this.__dirty = this.__dirtyText = !0, 
            this.__zr && this.__zr.refresh(), this.__clipTarget && this.__clipTarget.dirty();
        },
        animateShape: function(t) {
            return this.animate("shape", t);
        },
        attrKV: function(t, e) {
            "shape" === t ? (this.setShape(e), this.__dirtyPath = !0, this._rect = null) : wi.prototype.attrKV.call(this, t, e);
        },
        setShape: function(t, e) {
            var n = this.shape;
            if (n) {
                if (S(t)) for (var i in t) t.hasOwnProperty(i) && (n[i] = t[i]); else n[t] = e;
                this.dirty(!0);
            }
            return this;
        },
        getLineScale: function() {
            var t = this.transform;
            return t && hg(t[0] - 1) > 1e-10 && hg(t[3] - 1) > 1e-10 ? Math.sqrt(hg(t[0] * t[3] - t[2] * t[1])) : 1;
        }
    }, Vr.extend = function(t) {
        var e = function(e) {
            Vr.call(this, e), t.style && this.style.extendFrom(t.style, !1);
            var n = t.shape;
            if (n) {
                this.shape = this.shape || {};
                var i = this.shape;
                for (var r in n) !i.hasOwnProperty(r) && n.hasOwnProperty(r) && (i[r] = n[r]);
            }
            t.init && t.init.call(this, e);
        };
        h(e, Vr);
        for (var n in t) "style" !== n && "shape" !== n && (e.prototype[n] = t[n]);
        return e;
    }, h(Vr, wi);
    var fg = eg.CMD, dg = [ [], [], [] ], pg = Math.sqrt, gg = Math.atan2, vg = function(t, e) {
        var n, i, r, a, o, s, l = t.data, u = fg.M, h = fg.C, c = fg.L, f = fg.R, d = fg.A, p = fg.Q;
        for (r = 0, a = 0; r < l.length; ) {
            switch (n = l[r++], a = r, i = 0, n) {
              case u:
                i = 1;
                break;

              case c:
                i = 1;
                break;

              case h:
                i = 3;
                break;

              case p:
                i = 2;
                break;

              case d:
                var g = e[4], v = e[5], m = pg(e[0] * e[0] + e[1] * e[1]), y = pg(e[2] * e[2] + e[3] * e[3]), _ = gg(-e[1] / y, e[0] / m);
                l[r] *= m, l[r++] += g, l[r] *= y, l[r++] += v, l[r++] *= m, l[r++] *= y, l[r++] += _, 
                l[r++] += _, r += 2, a = r;
                break;

              case f:
                s[0] = l[r++], s[1] = l[r++], ae(s, s, e), l[a++] = s[0], l[a++] = s[1], s[0] += l[r++], 
                s[1] += l[r++], ae(s, s, e), l[a++] = s[0], l[a++] = s[1];
            }
            for (o = 0; i > o; o++) {
                var s = dg[o];
                s[0] = l[r++], s[1] = l[r++], ae(s, s, e), l[a++] = s[0], l[a++] = s[1];
            }
        }
    }, mg = Math.sqrt, yg = Math.sin, _g = Math.cos, xg = Math.PI, wg = function(t) {
        return Math.sqrt(t[0] * t[0] + t[1] * t[1]);
    }, bg = function(t, e) {
        return (t[0] * e[0] + t[1] * e[1]) / (wg(t) * wg(e));
    }, Sg = function(t, e) {
        return (t[0] * e[1] < t[1] * e[0] ? -1 : 1) * Math.acos(bg(t, e));
    }, Mg = /([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi, Tg = /-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g, Cg = function(t) {
        wi.call(this, t);
    };
    Cg.prototype = {
        constructor: Cg,
        type: "text",
        brush: function(t, e) {
            var n = this.style;
            this.__dirty && ii(n, !0), n.fill = n.stroke = n.shadowBlur = n.shadowColor = n.shadowOffsetX = n.shadowOffsetY = null;
            var i = n.text;
            return null != i && (i += ""), xi(i, n) ? (this.setTransform(t), ai(this, t, i, n, null, e), 
            void this.restoreTransform(t)) : void (t.__attrCachedBy = yd.NONE);
        },
        getBoundingRect: function() {
            var t = this.style;
            if (this.__dirty && ii(t, !0), !this._rect) {
                var e = t.text;
                null != e ? e += "" : e = "";
                var n = Vn(t.text + "", t.font, t.textAlign, t.textVerticalAlign, t.textPadding, t.textLineHeight, t.rich);
                if (n.x += t.x || 0, n.y += t.y || 0, vi(t.textStroke, t.textStrokeWidth)) {
                    var i = t.textStrokeWidth;
                    n.x -= i / 2, n.y -= i / 2, n.width += i, n.height += i;
                }
                this._rect = n;
            }
            return this._rect;
        }
    }, h(Cg, wi);
    var kg = Vr.extend({
        type: "circle",
        shape: {
            cx: 0,
            cy: 0,
            r: 0
        },
        buildPath: function(t, e, n) {
            n && t.moveTo(e.cx + e.r, e.cy), t.arc(e.cx, e.cy, e.r, 0, 2 * Math.PI, !0);
        }
    }), Ig = [ [ "shadowBlur", 0 ], [ "shadowColor", "#000" ], [ "shadowOffsetX", 0 ], [ "shadowOffsetY", 0 ] ], Dg = function(t) {
        return Qc.browser.ie && Qc.browser.version >= 11 ? function() {
            var e, n = this.__clipPaths, i = this.style;
            if (n) for (var r = 0; r < n.length; r++) {
                var a = n[r], o = a && a.shape, s = a && a.type;
                if (o && ("sector" === s && o.startAngle === o.endAngle || "rect" === s && (!o.width || !o.height))) {
                    for (var l = 0; l < Ig.length; l++) Ig[l][2] = i[Ig[l][0]], i[Ig[l][0]] = Ig[l][1];
                    e = !0;
                    break;
                }
            }
            if (t.apply(this, arguments), e) for (var l = 0; l < Ig.length; l++) i[Ig[l][0]] = Ig[l][2];
        } : t;
    }, Ag = Vr.extend({
        type: "sector",
        shape: {
            cx: 0,
            cy: 0,
            r0: 0,
            r: 0,
            startAngle: 0,
            endAngle: 2 * Math.PI,
            clockwise: !0
        },
        brush: Dg(Vr.prototype.brush),
        buildPath: function(t, e) {
            var n = e.cx, i = e.cy, r = Math.max(e.r0 || 0, 0), a = Math.max(e.r, 0), o = e.startAngle, s = e.endAngle, l = e.clockwise, u = Math.cos(o), h = Math.sin(o);
            t.moveTo(u * r + n, h * r + i), t.lineTo(u * a + n, h * a + i), t.arc(n, i, a, o, s, !l), 
            t.lineTo(Math.cos(s) * r + n, Math.sin(s) * r + i), 0 !== r && t.arc(n, i, r, s, o, l), 
            t.closePath();
        }
    }), Pg = Vr.extend({
        type: "ring",
        shape: {
            cx: 0,
            cy: 0,
            r: 0,
            r0: 0
        },
        buildPath: function(t, e) {
            var n = e.cx, i = e.cy, r = 2 * Math.PI;
            t.moveTo(n + e.r, i), t.arc(n, i, e.r, 0, r, !1), t.moveTo(n + e.r0, i), t.arc(n, i, e.r0, 0, r, !0);
        }
    }), Og = function(t, e) {
        for (var n = t.length, i = [], r = 0, a = 1; n > a; a++) r += ee(t[a - 1], t[a]);
        var o = r / 2;
        o = n > o ? n : o;
        for (var a = 0; o > a; a++) {
            var s, l, u, h = a / (o - 1) * (e ? n : n - 1), c = Math.floor(h), f = h - c, d = t[c % n];
            e ? (s = t[(c - 1 + n) % n], l = t[(c + 1) % n], u = t[(c + 2) % n]) : (s = t[0 === c ? c : c - 1], 
            l = t[c > n - 2 ? n - 1 : c + 1], u = t[c > n - 3 ? n - 1 : c + 2]);
            var p = f * f, g = f * p;
            i.push([ Ur(s[0], d[0], l[0], u[0], f, p, g), Ur(s[1], d[1], l[1], u[1], f, p, g) ]);
        }
        return i;
    }, Lg = function(t, e, n, i) {
        var r, a, o, s, l = [], u = [], h = [], c = [];
        if (i) {
            o = [ 1 / 0, 1 / 0 ], s = [ -1 / 0, -1 / 0 ];
            for (var f = 0, d = t.length; d > f; f++) oe(o, o, t[f]), se(s, s, t[f]);
            oe(o, o, i[0]), se(s, s, i[1]);
        }
        for (var f = 0, d = t.length; d > f; f++) {
            var p = t[f];
            if (n) r = t[f ? f - 1 : d - 1], a = t[(f + 1) % d]; else {
                if (0 === f || f === d - 1) {
                    l.push(G(t[f]));
                    continue;
                }
                r = t[f - 1], a = t[f + 1];
            }
            U(u, a, r), J(u, u, e);
            var g = ee(p, r), v = ee(p, a), m = g + v;
            0 !== m && (g /= m, v /= m), J(h, u, -g), J(c, u, v);
            var y = q([], p, h), _ = q([], p, c);
            i && (se(y, y, o), oe(y, y, s), se(_, _, o), oe(_, _, s)), l.push(y), l.push(_);
        }
        return n && l.push(l.shift()), l;
    }, Eg = Vr.extend({
        type: "polygon",
        shape: {
            points: null,
            smooth: !1,
            smoothConstraint: null
        },
        buildPath: function(t, e) {
            Yr(t, e, !0);
        }
    }), Bg = Vr.extend({
        type: "polyline",
        shape: {
            points: null,
            smooth: !1,
            smoothConstraint: null
        },
        style: {
            stroke: "#000",
            fill: null
        },
        buildPath: function(t, e) {
            Yr(t, e, !1);
        }
    }), zg = Math.round, Rg = {}, Fg = Vr.extend({
        type: "rect",
        shape: {
            r: 0,
            x: 0,
            y: 0,
            width: 0,
            height: 0
        },
        buildPath: function(t, e) {
            var n, i, r, a;
            this.subPixelOptimize ? ($r(Rg, e, this.style), n = Rg.x, i = Rg.y, r = Rg.width, 
            a = Rg.height, Rg.r = e.r, e = Rg) : (n = e.x, i = e.y, r = e.width, a = e.height), 
            e.r ? ni(t, e) : t.rect(n, i, r, a), t.closePath();
        }
    }), Ng = {}, Vg = Vr.extend({
        type: "line",
        shape: {
            x1: 0,
            y1: 0,
            x2: 0,
            y2: 0,
            percent: 1
        },
        style: {
            stroke: "#000",
            fill: null
        },
        buildPath: function(t, e) {
            var n, i, r, a;
            this.subPixelOptimize ? (Zr(Ng, e, this.style), n = Ng.x1, i = Ng.y1, r = Ng.x2, 
            a = Ng.y2) : (n = e.x1, i = e.y1, r = e.x2, a = e.y2);
            var o = e.percent;
            0 !== o && (t.moveTo(n, i), 1 > o && (r = n * (1 - o) + r * o, a = i * (1 - o) + a * o), 
            t.lineTo(r, a));
        },
        pointAt: function(t) {
            var e = this.shape;
            return [ e.x1 * (1 - t) + e.x2 * t, e.y1 * (1 - t) + e.y2 * t ];
        }
    }), Hg = [], Wg = Vr.extend({
        type: "bezier-curve",
        shape: {
            x1: 0,
            y1: 0,
            x2: 0,
            y2: 0,
            cpx1: 0,
            cpy1: 0,
            percent: 1
        },
        style: {
            stroke: "#000",
            fill: null
        },
        buildPath: function(t, e) {
            var n = e.x1, i = e.y1, r = e.x2, a = e.y2, o = e.cpx1, s = e.cpy1, l = e.cpx2, u = e.cpy2, h = e.percent;
            0 !== h && (t.moveTo(n, i), null == l || null == u ? (1 > h && (_r(n, o, r, h, Hg), 
            o = Hg[1], r = Hg[2], _r(i, s, a, h, Hg), s = Hg[1], a = Hg[2]), t.quadraticCurveTo(o, s, r, a)) : (1 > h && (dr(n, o, l, r, h, Hg), 
            o = Hg[1], l = Hg[2], r = Hg[3], dr(i, s, u, a, h, Hg), s = Hg[1], u = Hg[2], a = Hg[3]), 
            t.bezierCurveTo(o, s, l, u, r, a)));
        },
        pointAt: function(t) {
            return Qr(this.shape, t, !1);
        },
        tangentAt: function(t) {
            var e = Qr(this.shape, t, !0);
            return te(e, e);
        }
    }), Gg = Vr.extend({
        type: "arc",
        shape: {
            cx: 0,
            cy: 0,
            r: 0,
            startAngle: 0,
            endAngle: 2 * Math.PI,
            clockwise: !0
        },
        style: {
            stroke: "#000",
            fill: null
        },
        buildPath: function(t, e) {
            var n = e.cx, i = e.cy, r = Math.max(e.r, 0), a = e.startAngle, o = e.endAngle, s = e.clockwise, l = Math.cos(a), u = Math.sin(a);
            t.moveTo(l * r + n, u * r + i), t.arc(n, i, r, a, o, !s);
        }
    }), Xg = Vr.extend({
        type: "compound",
        shape: {
            paths: null
        },
        _updatePathDirty: function() {
            for (var t = this.__dirtyPath, e = this.shape.paths, n = 0; n < e.length; n++) t = t || e[n].__dirtyPath;
            this.__dirtyPath = t, this.__dirty = this.__dirty || t;
        },
        beforeBrush: function() {
            this._updatePathDirty();
            for (var t = this.shape.paths || [], e = this.getGlobalScale(), n = 0; n < t.length; n++) t[n].path || t[n].createPathProxy(), 
            t[n].path.setScale(e[0], e[1], t[n].segmentIgnoreThreshold);
        },
        buildPath: function(t, e) {
            for (var n = e.paths || [], i = 0; i < n.length; i++) n[i].buildPath(t, n[i].shape, !0);
        },
        afterBrush: function() {
            for (var t = this.shape.paths || [], e = 0; e < t.length; e++) t[e].__dirtyPath = !1;
        },
        getBoundingRect: function() {
            return this._updatePathDirty(), Vr.prototype.getBoundingRect.call(this);
        }
    }), qg = function(t) {
        this.colorStops = t || [];
    };
    qg.prototype = {
        constructor: qg,
        addColorStop: function(t, e) {
            this.colorStops.push({
                offset: t,
                color: e
            });
        }
    };
    var jg = function(t, e, n, i, r, a) {
        this.x = null == t ? 0 : t, this.y = null == e ? 0 : e, this.x2 = null == n ? 1 : n, 
        this.y2 = null == i ? 0 : i, this.type = "linear", this.global = a || !1, qg.call(this, r);
    };
    jg.prototype = {
        constructor: jg
    }, h(jg, qg);
    var Ug = function(t, e, n, i, r) {
        this.x = null == t ? .5 : t, this.y = null == e ? .5 : e, this.r = null == n ? .5 : n, 
        this.type = "radial", this.global = r || !1, qg.call(this, i);
    };
    Ug.prototype = {
        constructor: Ug
    }, h(Ug, qg), Jr.prototype.incremental = !0, Jr.prototype.clearDisplaybles = function() {
        this._displayables = [], this._temporaryDisplayables = [], this._cursor = 0, this.dirty(), 
        this.notClear = !1;
    }, Jr.prototype.addDisplayable = function(t, e) {
        e ? this._temporaryDisplayables.push(t) : this._displayables.push(t), this.dirty();
    }, Jr.prototype.addDisplayables = function(t, e) {
        e = e || !1;
        for (var n = 0; n < t.length; n++) this.addDisplayable(t[n], e);
    }, Jr.prototype.eachPendingDisplayable = function(t) {
        for (var e = this._cursor; e < this._displayables.length; e++) t && t(this._displayables[e]);
        for (var e = 0; e < this._temporaryDisplayables.length; e++) t && t(this._temporaryDisplayables[e]);
    }, Jr.prototype.update = function() {
        this.updateTransform();
        for (var t = this._cursor; t < this._displayables.length; t++) {
            var e = this._displayables[t];
            e.parent = this, e.update(), e.parent = null;
        }
        for (var t = 0; t < this._temporaryDisplayables.length; t++) {
            var e = this._temporaryDisplayables[t];
            e.parent = this, e.update(), e.parent = null;
        }
    }, Jr.prototype.brush = function(t) {
        for (var e = this._cursor; e < this._displayables.length; e++) {
            var n = this._displayables[e];
            n.beforeBrush && n.beforeBrush(t), n.brush(t, e === this._cursor ? null : this._displayables[e - 1]), 
            n.afterBrush && n.afterBrush(t);
        }
        this._cursor = e;
        for (var e = 0; e < this._temporaryDisplayables.length; e++) {
            var n = this._temporaryDisplayables[e];
            n.beforeBrush && n.beforeBrush(t), n.brush(t, 0 === e ? null : this._temporaryDisplayables[e - 1]), 
            n.afterBrush && n.afterBrush(t);
        }
        this._temporaryDisplayables = [], this.notClear = !0;
    };
    var Yg = [];
    Jr.prototype.getBoundingRect = function() {
        if (!this._rect) {
            for (var t = new wn(1 / 0, 1 / 0, -1 / 0, -1 / 0), e = 0; e < this._displayables.length; e++) {
                var n = this._displayables[e], i = n.getBoundingRect().clone();
                n.needLocalTransform() && i.applyTransform(n.getLocalTransform(Yg)), t.union(i);
            }
            this._rect = t;
        }
        return this._rect;
    }, Jr.prototype.contain = function(t, e) {
        var n = this.transformCoordToLocal(t, e), i = this.getBoundingRect();
        if (i.contain(n[0], n[1])) for (var r = 0; r < this._displayables.length; r++) {
            var a = this._displayables[r];
            if (a.contain(t, e)) return !0;
        }
        return !1;
    }, h(Jr, wi);
    var Zg = Math.max, $g = Math.min, Kg = {}, Qg = 1, Jg = {
        color: "textFill",
        textBorderColor: "textStroke",
        textBorderWidth: "textStrokeWidth"
    }, tv = "emphasis", ev = "normal", nv = 1, iv = {}, rv = {}, av = jr, ov = Kr, sv = F(), lv = 0;
    na("circle", kg), na("sector", Ag), na("ring", Pg), na("polygon", Eg), na("polyline", Bg), 
    na("rect", Fg), na("line", Vg), na("bezierCurve", Wg), na("arc", Gg);
    var uv = (Object.freeze || Object)({
        Z2_EMPHASIS_LIFT: Qg,
        CACHED_LABEL_STYLE_PROPERTIES: Jg,
        extendShape: ta,
        extendPath: ea,
        registerShape: na,
        getShapeClass: ia,
        makePath: ra,
        makeImage: aa,
        mergePath: av,
        resizePath: sa,
        subPixelOptimizeLine: la,
        subPixelOptimizeRect: ua,
        subPixelOptimize: ov,
        setElementHoverStyle: ma,
        setHoverStyle: Sa,
        setAsHighDownDispatcher: Ma,
        isHighDownDispatcher: Ta,
        getHighlightDigit: Ca,
        setLabelStyle: ka,
        modifyLabelStyle: Ia,
        setTextStyle: Da,
        setText: Aa,
        getFont: Ra,
        updateProps: Na,
        initProps: Va,
        getTransform: Ha,
        applyTransform: Wa,
        transformDirection: Ga,
        groupTransition: Xa,
        clipPointsByRect: qa,
        clipRectByRect: ja,
        createIcon: Ua,
        linePolygonIntersect: Ya,
        lineLineIntersect: Za,
        Group: fd,
        Image: bi,
        Text: Cg,
        Circle: kg,
        Sector: Ag,
        Ring: Pg,
        Polygon: Eg,
        Polyline: Bg,
        Rect: Fg,
        Line: Vg,
        BezierCurve: Wg,
        Arc: Gg,
        IncrementalDisplayable: Jr,
        CompoundPath: Xg,
        LinearGradient: jg,
        RadialGradient: Ug,
        BoundingRect: wn
    }), hv = [ "textStyle", "color" ], cv = {
        getTextColor: function(t) {
            var e = this.ecModel;
            return this.getShallow("color") || (!t && e ? e.get(hv) : null);
        },
        getFont: function() {
            return Ra({
                fontStyle: this.getShallow("fontStyle"),
                fontWeight: this.getShallow("fontWeight"),
                fontSize: this.getShallow("fontSize"),
                fontFamily: this.getShallow("fontFamily")
            }, this.ecModel);
        },
        getTextRect: function(t) {
            return Vn(t, this.getFont(), this.getShallow("align"), this.getShallow("verticalAlign") || this.getShallow("baseline"), this.getShallow("padding"), this.getShallow("lineHeight"), this.getShallow("rich"), this.getShallow("truncateText"));
        }
    }, fv = _p([ [ "fill", "color" ], [ "stroke", "borderColor" ], [ "lineWidth", "borderWidth" ], [ "opacity" ], [ "shadowBlur" ], [ "shadowOffsetX" ], [ "shadowOffsetY" ], [ "shadowColor" ], [ "textPosition" ], [ "textAlign" ] ]), dv = {
        getItemStyle: function(t, e) {
            var n = fv(this, t, e), i = this.getBorderLineDash();
            return i && (n.lineDash = i), n;
        },
        getBorderLineDash: function() {
            var t = this.get("borderType");
            return "solid" === t || null == t ? null : "dashed" === t ? [ 5, 5 ] : [ 1, 1 ];
        }
    }, pv = c, gv = Yi();
    Qa.prototype = {
        constructor: Qa,
        init: null,
        mergeOption: function(t) {
            r(this.option, t, !0);
        },
        get: function(t, e) {
            return null == t ? this.option : Ja(this.option, this.parsePath(t), !e && to(this, t));
        },
        getShallow: function(t, e) {
            var n = this.option, i = null == n ? n : n[t], r = !e && to(this, t);
            return null == i && r && (i = r.getShallow(t)), i;
        },
        getModel: function(t, e) {
            var n, i = null == t ? this.option : Ja(this.option, t = this.parsePath(t));
            return e = e || (n = to(this, t)) && n.getModel(t), new Qa(i, e, this.ecModel);
        },
        isEmpty: function() {
            return null == this.option;
        },
        restoreData: function() {},
        clone: function() {
            var t = this.constructor;
            return new t(i(this.option));
        },
        setReadOnly: function() {},
        parsePath: function(t) {
            return "string" == typeof t && (t = t.split(".")), t;
        },
        customizeGetParent: function(t) {
            gv(this).getParent = t;
        },
        isAnimationEnabled: function() {
            if (!Qc.node) {
                if (null != this.option.animation) return !!this.option.animation;
                if (this.parentModel) return this.parentModel.isAnimationEnabled();
            }
        }
    }, nr(Qa), ir(Qa), pv(Qa, wp), pv(Qa, Sp), pv(Qa, cv), pv(Qa, dv);
    var vv = 0, mv = 1e-4, yv = 9007199254740991, _v = /^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d\d)(?::(\d\d)(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/, xv = (Object.freeze || Object)({
        linearMap: ao,
        parsePercent: oo,
        round: so,
        asc: lo,
        getPrecision: uo,
        getPrecisionSafe: ho,
        getPixelPrecision: co,
        getPercentWithPrecision: fo,
        MAX_SAFE_INTEGER: yv,
        remRadian: po,
        isRadianAroundZero: go,
        parseDate: vo,
        quantity: mo,
        nice: _o,
        quantile: xo,
        reformIntervals: wo,
        isNumeric: bo
    }), wv = O, bv = /([&<>"'])/g, Sv = {
        "&": "&amp;",
        "<": "&lt;",
        ">": "&gt;",
        '"': "&quot;",
        "'": "&#39;"
    }, Mv = [ "a", "b", "c", "d", "e", "f", "g" ], Tv = function(t, e) {
        return "{" + t + (null == e ? "" : e) + "}";
    }, Cv = jn, kv = (Object.freeze || Object)({
        addCommas: So,
        toCamelCase: Mo,
        normalizeCssArray: wv,
        encodeHTML: To,
        formatTpl: Co,
        formatTplSimple: ko,
        getTooltipMarker: Io,
        formatTime: Ao,
        capitalFirst: Po,
        truncateText: Cv,
        getTextBoundingRect: Oo,
        getTextRect: Lo
    }), Iv = d, Dv = [ "left", "right", "top", "bottom", "width", "height" ], Av = [ [ "width", "left", "right" ], [ "height", "top", "bottom" ] ], Pv = (_(Eo, "vertical"), 
    _(Eo, "horizontal"), {
        getBoxLayoutParams: function() {
            return {
                left: this.get("left"),
                top: this.get("top"),
                right: this.get("right"),
                bottom: this.get("bottom"),
                width: this.get("width"),
                height: this.get("height")
            };
        }
    }), Ov = Yi(), Lv = Qa.extend({
        type: "component",
        id: "",
        name: "",
        mainType: "",
        subType: "",
        componentIndex: 0,
        defaultOption: null,
        ecModel: null,
        dependentModels: [],
        uid: null,
        layoutMode: null,
        $constructor: function(t, e, n, i) {
            Qa.call(this, t, e, n, i), this.uid = eo("ec_cpt_model");
        },
        init: function(t, e, n) {
            this.mergeDefaultAndTheme(t, n);
        },
        mergeDefaultAndTheme: function(t, e) {
            var n = this.layoutMode, i = n ? Ro(t) : {}, a = e.getTheme();
            r(t, a.get(this.mainType)), r(t, this.getDefaultOption()), n && zo(t, i, n);
        },
        mergeOption: function(t) {
            r(this.option, t, !0);
            var e = this.layoutMode;
            e && zo(this.option, t, e);
        },
        optionUpdated: function() {},
        getDefaultOption: function() {
            var t = Ov(this);
            if (!t.defaultOption) {
                for (var e = [], n = this.constructor; n; ) {
                    var i = n.prototype.defaultOption;
                    i && e.push(i), n = n.superClass;
                }
                for (var a = {}, o = e.length - 1; o >= 0; o--) a = r(a, e[o], !0);
                t.defaultOption = a;
            }
            return t.defaultOption;
        },
        getReferringComponents: function(t) {
            return this.ecModel.queryComponents({
                mainType: t,
                index: this.get(t + "Index", !0),
                id: this.get(t + "Id", !0)
            });
        }
    });
    or(Lv, {
        registerWhenExtend: !0
    }), no(Lv), io(Lv, No), c(Lv, Pv);
    var Ev = "";
    "undefined" != typeof navigator && (Ev = navigator.platform || "");
    var Bv = {
        color: [ "#c23531", "#2f4554", "#61a0a8", "#d48265", "#91c7ae", "#749f83", "#ca8622", "#bda29a", "#6e7074", "#546570", "#c4ccd3" ],
        gradientColor: [ "#f6efa6", "#d88273", "#bf444c" ],
        textStyle: {
            fontFamily: Ev.match(/^Win/) ? "Microsoft YaHei" : "sans-serif",
            fontSize: 12,
            fontStyle: "normal",
            fontWeight: "normal"
        },
        blendMode: null,
        animation: "auto",
        animationDuration: 1e3,
        animationDurationUpdate: 300,
        animationEasing: "exponentialOut",
        animationEasingUpdate: "cubicOut",
        animationThreshold: 2e3,
        progressiveThreshold: 3e3,
        progressive: 400,
        hoverLayerThreshold: 3e3,
        useUTC: !1
    }, zv = Yi(), Rv = {
        clearColorPalette: function() {
            zv(this).colorIdx = 0, zv(this).colorNameMap = {};
        },
        getColorFromPalette: function(t, e, n) {
            e = e || this;
            var i = zv(e), r = i.colorIdx || 0, a = i.colorNameMap = i.colorNameMap || {};
            if (a.hasOwnProperty(t)) return a[t];
            var o = Ni(this.get("color", !0)), s = this.get("colorLayer", !0), l = null != n && s ? Vo(s, n) : o;
            if (l = l || o, l && l.length) {
                var u = l[r];
                return t && (a[t] = u), i.colorIdx = (r + 1) % l.length, u;
            }
        }
    }, Fv = {
        cartesian2d: function(t, e, n, i) {
            var r = t.getReferringComponents("xAxis")[0], a = t.getReferringComponents("yAxis")[0];
            e.coordSysDims = [ "x", "y" ], n.set("x", r), n.set("y", a), Wo(r) && (i.set("x", r), 
            e.firstCategoryDimIndex = 0), Wo(a) && (i.set("y", a), e.firstCategoryDimIndex = 1);
        },
        singleAxis: function(t, e, n, i) {
            var r = t.getReferringComponents("singleAxis")[0];
            e.coordSysDims = [ "single" ], n.set("single", r), Wo(r) && (i.set("single", r), 
            e.firstCategoryDimIndex = 0);
        },
        polar: function(t, e, n, i) {
            var r = t.getReferringComponents("polar")[0], a = r.findAxisModel("radiusAxis"), o = r.findAxisModel("angleAxis");
            e.coordSysDims = [ "radius", "angle" ], n.set("radius", a), n.set("angle", o), Wo(a) && (i.set("radius", a), 
            e.firstCategoryDimIndex = 0), Wo(o) && (i.set("angle", o), e.firstCategoryDimIndex = 1);
        },
        geo: function(t, e) {
            e.coordSysDims = [ "lng", "lat" ];
        },
        parallel: function(t, e, n, i) {
            var r = t.ecModel, a = r.getComponent("parallel", t.get("parallelIndex")), o = e.coordSysDims = a.dimensions.slice();
            d(a.parallelAxisIndex, function(t, a) {
                var s = r.getComponent("parallelAxis", t), l = o[a];
                n.set(l, s), Wo(s) && null == e.firstCategoryDimIndex && (i.set(l, s), e.firstCategoryDimIndex = a);
            });
        }
    }, Nv = "original", Vv = "arrayRows", Hv = "objectRows", Wv = "keyedColumns", Gv = "unknown", Xv = "typedArray", qv = "column", jv = "row";
    Go.seriesDataToSource = function(t) {
        return new Go({
            data: t,
            sourceFormat: T(t) ? Xv : Nv,
            fromDataset: !1
        });
    }, ir(Go);
    var Uv = Yi(), Yv = "\0_ec_inner", Zv = Qa.extend({
        init: function(t, e, n, i) {
            n = n || {}, this.option = null, this._theme = new Qa(n), this._optionManager = i;
        },
        setOption: function(t, e) {
            L(!(Yv in t), "please use chart.getOption()"), this._optionManager.setOption(t, e), 
            this.resetOption(null);
        },
        resetOption: function(t) {
            var e = !1, n = this._optionManager;
            if (!t || "recreate" === t) {
                var i = n.mountOption("recreate" === t);
                this.option && "recreate" !== t ? (this.restoreData(), this.mergeOption(i)) : rs.call(this, i), 
                e = !0;
            }
            if (("timeline" === t || "media" === t) && this.restoreData(), !t || "recreate" === t || "timeline" === t) {
                var r = n.getTimelineOption(this);
                r && (this.mergeOption(r), e = !0);
            }
            if (!t || "recreate" === t || "media" === t) {
                var a = n.getMediaOption(this, this._api);
                a.length && d(a, function(t) {
                    this.mergeOption(t, e = !0);
                }, this);
            }
            return e;
        },
        mergeOption: function(t) {
            function e(e, i) {
                var r = Ni(t[e]), s = Gi(a.get(e), r);
                Xi(s), d(s, function(t) {
                    var n = t.option;
                    S(n) && (t.keyInfo.mainType = e, t.keyInfo.subType = os(e, n, t.exist));
                });
                var l = as(a, i);
                n[e] = [], a.set(e, []), d(s, function(t, i) {
                    var r = t.exist, s = t.option;
                    if (L(S(s) || r, "Empty component definition"), s) {
                        var u = Lv.getClass(e, t.keyInfo.subType, !0);
                        if (r && r instanceof u) r.name = t.keyInfo.name, r.mergeOption(s, this), r.optionUpdated(s, !1); else {
                            var h = o({
                                dependentModels: l,
                                componentIndex: i
                            }, t.keyInfo);
                            r = new u(s, this, this, h), o(r, h), r.init(s, this, this, h), r.optionUpdated(null, !0);
                        }
                    } else r.mergeOption({}, this), r.optionUpdated({}, !1);
                    a.get(e)[i] = r, n[e][i] = r.option;
                }, this), "series" === e && ss(this, a.get("series"));
            }
            var n = this.option, a = this._componentsMap, s = [];
            jo(this), d(t, function(t, e) {
                null != t && (Lv.hasClass(e) ? e && s.push(e) : n[e] = null == n[e] ? i(t) : r(n[e], t, !0));
            }), Lv.topologicalTravel(s, Lv.getAllClassMainTypes(), e, this), this._seriesIndicesMap = F(this._seriesIndices = this._seriesIndices || []);
        },
        getOption: function() {
            var t = i(this.option);
            return d(t, function(e, n) {
                if (Lv.hasClass(n)) {
                    for (var e = Ni(e), i = e.length - 1; i >= 0; i--) ji(e[i]) && e.splice(i, 1);
                    t[n] = e;
                }
            }), delete t[Yv], t;
        },
        getTheme: function() {
            return this._theme;
        },
        getComponent: function(t, e) {
            var n = this._componentsMap.get(t);
            return n ? n[e || 0] : void 0;
        },
        queryComponents: function(t) {
            var e = t.mainType;
            if (!e) return [];
            var n = t.index, i = t.id, r = t.name, a = this._componentsMap.get(e);
            if (!a || !a.length) return [];
            var o;
            if (null != n) x(n) || (n = [ n ]), o = v(p(n, function(t) {
                return a[t];
            }), function(t) {
                return !!t;
            }); else if (null != i) {
                var s = x(i);
                o = v(a, function(t) {
                    return s && u(i, t.id) >= 0 || !s && t.id === i;
                });
            } else if (null != r) {
                var l = x(r);
                o = v(a, function(t) {
                    return l && u(r, t.name) >= 0 || !l && t.name === r;
                });
            } else o = a.slice();
            return ls(o, t);
        },
        findComponents: function(t) {
            function e(t) {
                var e = r + "Index", n = r + "Id", i = r + "Name";
                return !t || null == t[e] && null == t[n] && null == t[i] ? null : {
                    mainType: r,
                    index: t[e],
                    id: t[n],
                    name: t[i]
                };
            }
            function n(e) {
                return t.filter ? v(e, t.filter) : e;
            }
            var i = t.query, r = t.mainType, a = e(i), o = a ? this.queryComponents(a) : this._componentsMap.get(r);
            return n(ls(o, t));
        },
        eachComponent: function(t, e, n) {
            var i = this._componentsMap;
            if ("function" == typeof t) n = e, e = t, i.each(function(t, i) {
                d(t, function(t, r) {
                    e.call(n, i, t, r);
                });
            }); else if (b(t)) d(i.get(t), e, n); else if (S(t)) {
                var r = this.findComponents(t);
                d(r, e, n);
            }
        },
        getSeriesByName: function(t) {
            var e = this._componentsMap.get("series");
            return v(e, function(e) {
                return e.name === t;
            });
        },
        getSeriesByIndex: function(t) {
            return this._componentsMap.get("series")[t];
        },
        getSeriesByType: function(t) {
            var e = this._componentsMap.get("series");
            return v(e, function(e) {
                return e.subType === t;
            });
        },
        getSeries: function() {
            return this._componentsMap.get("series").slice();
        },
        getSeriesCount: function() {
            return this._componentsMap.get("series").length;
        },
        eachSeries: function(t, e) {
            d(this._seriesIndices, function(n) {
                var i = this._componentsMap.get("series")[n];
                t.call(e, i, n);
            }, this);
        },
        eachRawSeries: function(t, e) {
            d(this._componentsMap.get("series"), t, e);
        },
        eachSeriesByType: function(t, e, n) {
            d(this._seriesIndices, function(i) {
                var r = this._componentsMap.get("series")[i];
                r.subType === t && e.call(n, r, i);
            }, this);
        },
        eachRawSeriesByType: function(t, e, n) {
            return d(this.getSeriesByType(t), e, n);
        },
        isSeriesFiltered: function(t) {
            return null == this._seriesIndicesMap.get(t.componentIndex);
        },
        getCurrentSeriesIndices: function() {
            return (this._seriesIndices || []).slice();
        },
        filterSeries: function(t, e) {
            var n = v(this._componentsMap.get("series"), t, e);
            ss(this, n);
        },
        restoreData: function(t) {
            var e = this._componentsMap;
            ss(this, e.get("series"));
            var n = [];
            e.each(function(t, e) {
                n.push(e);
            }), Lv.topologicalTravel(n, Lv.getAllClassMainTypes(), function(n) {
                d(e.get(n), function(e) {
                    ("series" !== n || !ns(e, t)) && e.restoreData();
                });
            });
        }
    });
    c(Zv, Rv);
    var $v = [ "getDom", "getZr", "getWidth", "getHeight", "getDevicePixelRatio", "dispatchAction", "isDisposed", "on", "off", "getDataURL", "getConnectedDataURL", "getModel", "getOption", "getViewOfComponentModel", "getViewOfSeriesModel" ], Kv = {};
    hs.prototype = {
        constructor: hs,
        create: function(t, e) {
            var n = [];
            d(Kv, function(i) {
                var r = i.create(t, e);
                n = n.concat(r || []);
            }), this._coordinateSystems = n;
        },
        update: function(t, e) {
            d(this._coordinateSystems, function(n) {
                n.update && n.update(t, e);
            });
        },
        getCoordinateSystems: function() {
            return this._coordinateSystems.slice();
        }
    }, hs.register = function(t, e) {
        Kv[t] = e;
    }, hs.get = function(t) {
        return Kv[t];
    };
    var Qv = d, Jv = i, tm = p, em = r, nm = /^(min|max)?(.+)$/;
    cs.prototype = {
        constructor: cs,
        setOption: function(t, e) {
            t && d(Ni(t.series), function(t) {
                t && t.data && T(t.data) && B(t.data);
            }), t = Jv(t);
            var n = this._optionBackup, i = fs.call(this, t, e, !n);
            this._newBaseOption = i.baseOption, n ? (vs(n.baseOption, i.baseOption), i.timelineOptions.length && (n.timelineOptions = i.timelineOptions), 
            i.mediaList.length && (n.mediaList = i.mediaList), i.mediaDefault && (n.mediaDefault = i.mediaDefault)) : this._optionBackup = i;
        },
        mountOption: function(t) {
            var e = this._optionBackup;
            return this._timelineOptions = tm(e.timelineOptions, Jv), this._mediaList = tm(e.mediaList, Jv), 
            this._mediaDefault = Jv(e.mediaDefault), this._currentMediaIndices = [], Jv(t ? e.baseOption : this._newBaseOption);
        },
        getTimelineOption: function(t) {
            var e, n = this._timelineOptions;
            if (n.length) {
                var i = t.getComponent("timeline");
                i && (e = Jv(n[i.getCurrentIndex()], !0));
            }
            return e;
        },
        getMediaOption: function() {
            var t = this._api.getWidth(), e = this._api.getHeight(), n = this._mediaList, i = this._mediaDefault, r = [], a = [];
            if (!n.length && !i) return a;
            for (var o = 0, s = n.length; s > o; o++) ds(n[o].query, t, e) && r.push(o);
            return !r.length && i && (r = [ -1 ]), r.length && !gs(r, this._currentMediaIndices) && (a = tm(r, function(t) {
                return Jv(-1 === t ? i.option : n[t].option);
            })), this._currentMediaIndices = r, a;
        }
    };
    var im = d, rm = S, am = [ "areaStyle", "lineStyle", "nodeStyle", "linkStyle", "chordStyle", "label", "labelLine" ], om = function(t, e) {
        im(Ss(t.series), function(t) {
            rm(t) && bs(t);
        });
        var n = [ "xAxis", "yAxis", "radiusAxis", "angleAxis", "singleAxis", "parallelAxis", "radar" ];
        e && n.push("valueAxis", "categoryAxis", "logAxis", "timeAxis"), im(n, function(e) {
            im(Ss(t[e]), function(t) {
                t && (xs(t, "axisLabel"), xs(t.axisPointer, "label"));
            });
        }), im(Ss(t.parallel), function(t) {
            var e = t && t.parallelAxisDefault;
            xs(e, "axisLabel"), xs(e && e.axisPointer, "label");
        }), im(Ss(t.calendar), function(t) {
            ys(t, "itemStyle"), xs(t, "dayLabel"), xs(t, "monthLabel"), xs(t, "yearLabel");
        }), im(Ss(t.radar), function(t) {
            xs(t, "name");
        }), im(Ss(t.geo), function(t) {
            rm(t) && (ws(t), im(Ss(t.regions), function(t) {
                ws(t);
            }));
        }), im(Ss(t.timeline), function(t) {
            ws(t), ys(t, "label"), ys(t, "itemStyle"), ys(t, "controlStyle", !0);
            var e = t.data;
            x(e) && d(e, function(t) {
                S(t) && (ys(t, "label"), ys(t, "itemStyle"));
            });
        }), im(Ss(t.toolbox), function(t) {
            ys(t, "iconStyle"), im(t.feature, function(t) {
                ys(t, "iconStyle");
            });
        }), xs(Ms(t.axisPointer), "label"), xs(Ms(t.tooltip).axisPointer, "label");
    }, sm = [ [ "x", "left" ], [ "y", "top" ], [ "x2", "right" ], [ "y2", "bottom" ] ], lm = [ "grid", "geo", "parallel", "legend", "toolbox", "title", "visualMap", "dataZoom", "timeline" ], um = function(t, e) {
        om(t, e), t.series = Ni(t.series), d(t.series, function(t) {
            if (S(t)) {
                var e = t.type;
                if ("line" === e) null != t.clipOverflow && (t.clip = t.clipOverflow); else if ("pie" === e || "gauge" === e) null != t.clockWise && (t.clockwise = t.clockWise); else if ("gauge" === e) {
                    var n = Ts(t, "pointer.color");
                    null != n && Cs(t, "itemStyle.color", n);
                }
                ks(t);
            }
        }), t.dataRange && (t.visualMap = t.dataRange), d(lm, function(e) {
            var n = t[e];
            n && (x(n) || (n = [ n ]), d(n, function(t) {
                ks(t);
            }));
        });
    }, hm = function(t) {
        var e = F();
        t.eachSeries(function(t) {
            var n = t.get("stack");
            if (n) {
                var i = e.get(n) || e.set(n, []), r = t.getData(), a = {
                    stackResultDimension: r.getCalculationInfo("stackResultDimension"),
                    stackedOverDimension: r.getCalculationInfo("stackedOverDimension"),
                    stackedDimension: r.getCalculationInfo("stackedDimension"),
                    stackedByDimension: r.getCalculationInfo("stackedByDimension"),
                    isStackedByIndex: r.getCalculationInfo("isStackedByIndex"),
                    data: r,
                    seriesModel: t
                };
                if (!a.stackedDimension || !a.isStackedByIndex && !a.stackedByDimension) return;
                i.length && r.setCalculationInfo("stackedOnSeries", i[i.length - 1].seriesModel), 
                i.push(a);
            }
        }), e.each(Is);
    }, cm = Ds.prototype;
    cm.pure = !1, cm.persistent = !0, cm.getSource = function() {
        return this._source;
    };
    var fm = {
        arrayRows_column: {
            pure: !0,
            count: function() {
                return Math.max(0, this._data.length - this._source.startIndex);
            },
            getItem: function(t) {
                return this._data[t + this._source.startIndex];
            },
            appendData: Os
        },
        arrayRows_row: {
            pure: !0,
            count: function() {
                var t = this._data[0];
                return t ? Math.max(0, t.length - this._source.startIndex) : 0;
            },
            getItem: function(t) {
                t += this._source.startIndex;
                for (var e = [], n = this._data, i = 0; i < n.length; i++) {
                    var r = n[i];
                    e.push(r ? r[t] : null);
                }
                return e;
            },
            appendData: function() {
                throw new Error('Do not support appendData when set seriesLayoutBy: "row".');
            }
        },
        objectRows: {
            pure: !0,
            count: As,
            getItem: Ps,
            appendData: Os
        },
        keyedColumns: {
            pure: !0,
            count: function() {
                var t = this._source.dimensionsDefine[0].name, e = this._data[t];
                return e ? e.length : 0;
            },
            getItem: function(t) {
                for (var e = [], n = this._source.dimensionsDefine, i = 0; i < n.length; i++) {
                    var r = this._data[n[i].name];
                    e.push(r ? r[t] : null);
                }
                return e;
            },
            appendData: function(t) {
                var e = this._data;
                d(t, function(t, n) {
                    for (var i = e[n] || (e[n] = []), r = 0; r < (t || []).length; r++) i.push(t[r]);
                });
            }
        },
        original: {
            count: As,
            getItem: Ps,
            appendData: Os
        },
        typedArray: {
            persistent: !1,
            pure: !0,
            count: function() {
                return this._data ? this._data.length / this._dimSize : 0;
            },
            getItem: function(t, e) {
                t -= this._offset, e = e || [];
                for (var n = this._dimSize * t, i = 0; i < this._dimSize; i++) e[i] = this._data[n + i];
                return e;
            },
            appendData: function(t) {
                this._data = t;
            },
            clean: function() {
                this._offset += this.count(), this._data = null;
            }
        }
    }, dm = {
        arrayRows: Ls,
        objectRows: function(t, e, n, i) {
            return null != n ? t[i] : t;
        },
        keyedColumns: Ls,
        original: function(t, e, n) {
            var i = Hi(t);
            return null != n && i instanceof Array ? i[n] : i;
        },
        typedArray: Ls
    }, pm = {
        arrayRows: Es,
        objectRows: function(t, e) {
            return Bs(t[e], this._dimensionInfos[e]);
        },
        keyedColumns: Es,
        original: function(t, e, n, i) {
            var r = t && (null == t.value ? t : t.value);
            return !this._rawData.pure && Wi(t) && (this.hasItemOption = !0), Bs(r instanceof Array ? r[i] : r, this._dimensionInfos[e]);
        },
        typedArray: function(t, e, n, i) {
            return t[i];
        }
    }, gm = /\{@(.+?)\}/g, vm = {
        getDataParams: function(t, e) {
            var n = this.getData(e), i = this.getRawValue(t, e), r = n.getRawIndex(t), a = n.getName(t), o = n.getRawDataItem(t), s = n.getItemVisual(t, "color"), l = n.getItemVisual(t, "borderColor"), u = this.ecModel.getComponent("tooltip"), h = u && u.get("renderMode"), c = Ji(h), f = this.mainType, d = "series" === f, p = n.userOutput;
            return {
                componentType: f,
                componentSubType: this.subType,
                componentIndex: this.componentIndex,
                seriesType: d ? this.subType : null,
                seriesIndex: this.seriesIndex,
                seriesId: d ? this.id : null,
                seriesName: d ? this.name : null,
                name: a,
                dataIndex: r,
                data: o,
                dataType: e,
                value: i,
                color: s,
                borderColor: l,
                dimensionNames: p ? p.dimensionNames : null,
                encode: p ? p.encode : null,
                marker: Io({
                    color: s,
                    renderMode: c
                }),
                $vars: [ "seriesName", "name", "value" ]
            };
        },
        getFormattedLabel: function(t, e, n, i, r) {
            e = e || "normal";
            var a = this.getData(n), o = a.getItemModel(t), s = this.getDataParams(t, n);
            null != i && s.value instanceof Array && (s.value = s.value[i]);
            var l = o.get("normal" === e ? [ r || "label", "formatter" ] : [ e, r || "label", "formatter" ]);
            if ("function" == typeof l) return s.status = e, s.dimensionIndex = i, l(s);
            if ("string" == typeof l) {
                var u = Co(l, s);
                return u.replace(gm, function(e, n) {
                    var i = n.length;
                    return "[" === n.charAt(0) && "]" === n.charAt(i - 1) && (n = +n.slice(1, i - 1)), 
                    zs(a, t, n);
                });
            }
        },
        getRawValue: function(t, e) {
            return zs(this.getData(e), t);
        },
        formatTooltip: function() {}
    }, mm = Fs.prototype;
    mm.perform = function(t) {
        function e(t) {
            return !(t >= 1) && (t = 1), t;
        }
        var n = this._upstream, i = t && t.skip;
        if (this._dirty && n) {
            var r = this.context;
            r.data = r.outputData = n.context.outputData;
        }
        this.__pipeline && (this.__pipeline.currentTask = this);
        var a;
        this._plan && !i && (a = this._plan(this.context));
        var o = e(this._modBy), s = this._modDataCount || 0, l = e(t && t.modBy), u = t && t.modDataCount || 0;
        (o !== l || s !== u) && (a = "reset");
        var h;
        (this._dirty || "reset" === a) && (this._dirty = !1, h = Vs(this, i)), this._modBy = l, 
        this._modDataCount = u;
        var c = t && t.step;
        if (this._dueEnd = n ? n._outputDueEnd : this._count ? this._count(this.context) : 1 / 0, 
        this._progress) {
            var f = this._dueIndex, d = Math.min(null != c ? this._dueIndex + c : 1 / 0, this._dueEnd);
            if (!i && (h || d > f)) {
                var p = this._progress;
                if (x(p)) for (var g = 0; g < p.length; g++) Ns(this, p[g], f, d, l, u); else Ns(this, p, f, d, l, u);
            }
            this._dueIndex = d;
            var v = null != this._settedOutputEnd ? this._settedOutputEnd : d;
            this._outputDueEnd = v;
        } else this._dueIndex = this._outputDueEnd = null != this._settedOutputEnd ? this._settedOutputEnd : this._dueEnd;
        return this.unfinished();
    };
    var ym = function() {
        function t() {
            return n > i ? i++ : null;
        }
        function e() {
            var t = i % o * r + Math.ceil(i / o), e = i >= n ? null : a > t ? t : i;
            return i++, e;
        }
        var n, i, r, a, o, s = {
            reset: function(l, u, h, c) {
                i = l, n = u, r = h, a = c, o = Math.ceil(a / r), s.next = r > 1 && a > 0 ? e : t;
            }
        };
        return s;
    }();
    mm.dirty = function() {
        this._dirty = !0, this._onDirty && this._onDirty(this.context);
    }, mm.unfinished = function() {
        return this._progress && this._dueIndex < this._dueEnd;
    }, mm.pipe = function(t) {
        (this._downstream !== t || this._dirty) && (this._downstream = t, t._upstream = this, 
        t.dirty());
    }, mm.dispose = function() {
        this._disposed || (this._upstream && (this._upstream._downstream = null), this._downstream && (this._downstream._upstream = null), 
        this._dirty = !1, this._disposed = !0);
    }, mm.getUpstream = function() {
        return this._upstream;
    }, mm.getDownstream = function() {
        return this._downstream;
    }, mm.setOutputEnd = function(t) {
        this._outputDueEnd = this._settedOutputEnd = t;
    };
    var _m = Yi(), xm = Lv.extend({
        type: "series.__base__",
        seriesIndex: 0,
        coordinateSystem: null,
        defaultOption: null,
        legendDataProvider: null,
        visualColorAccessPath: "itemStyle.color",
        visualBorderColorAccessPath: "itemStyle.borderColor",
        layoutMode: null,
        init: function(t, e, n) {
            this.seriesIndex = this.componentIndex, this.dataTask = Rs({
                count: Gs,
                reset: Xs
            }), this.dataTask.context = {
                model: this
            }, this.mergeDefaultAndTheme(t, n), Uo(this);
            var i = this.getInitialData(t, n);
            js(i, this), this.dataTask.context.data = i, _m(this).dataBeforeProcessed = i, Hs(this);
        },
        mergeDefaultAndTheme: function(t, e) {
            var n = this.layoutMode, i = n ? Ro(t) : {}, a = this.subType;
            Lv.hasClass(a) && (a += "Series"), r(t, e.getTheme().get(this.subType)), r(t, this.getDefaultOption()), 
            Vi(t, "label", [ "show" ]), this.fillDataTextStyle(t.data), n && zo(t, i, n);
        },
        mergeOption: function(t, e) {
            t = r(this.option, t, !0), this.fillDataTextStyle(t.data);
            var n = this.layoutMode;
            n && zo(this.option, t, n), Uo(this);
            var i = this.getInitialData(t, e);
            js(i, this), this.dataTask.dirty(), this.dataTask.context.data = i, _m(this).dataBeforeProcessed = i, 
            Hs(this);
        },
        fillDataTextStyle: function(t) {
            if (t && !T(t)) for (var e = [ "show" ], n = 0; n < t.length; n++) t[n] && t[n].label && Vi(t[n], "label", e);
        },
        getInitialData: function() {},
        appendData: function(t) {
            var e = this.getRawData();
            e.appendData(t.data);
        },
        getData: function(t) {
            var e = Ys(this);
            if (e) {
                var n = e.context.data;
                return null == t ? n : n.getLinkedData(t);
            }
            return _m(this).data;
        },
        setData: function(t) {
            var e = Ys(this);
            if (e) {
                var n = e.context;
                n.data !== t && e.modifyOutputEnd && e.setOutputEnd(t.count()), n.outputData = t, 
                e !== this.dataTask && (n.data = t);
            }
            _m(this).data = t;
        },
        getSource: function() {
            return qo(this);
        },
        getRawData: function() {
            return _m(this).dataBeforeProcessed;
        },
        getBaseAxis: function() {
            var t = this.coordinateSystem;
            return t && t.getBaseAxis && t.getBaseAxis();
        },
        formatTooltip: function(t, e, n, i) {
            function r(n) {
                function r(t, n) {
                    var r = c.getDimensionInfo(n);
                    if (r && r.otherDims.tooltip !== !1) {
                        var f = r.type, d = "sub" + o.seriesIndex + "at" + h, p = Io({
                            color: y,
                            type: "subItem",
                            renderMode: i,
                            markerId: d
                        }), g = "string" == typeof p ? p : p.content, v = (a ? g + To(r.displayName || "-") + ": " : "") + To("ordinal" === f ? t + "" : "time" === f ? e ? "" : Ao("yyyy/MM/dd hh:mm:ss", t) : So(t));
                        v && s.push(v), l && (u[d] = y, ++h);
                    }
                }
                var a = g(n, function(t, e, n) {
                    var i = c.getDimensionInfo(n);
                    return t |= i && i.tooltip !== !1 && null != i.displayName;
                }, 0), s = [];
                f.length ? d(f, function(e) {
                    r(zs(c, t, e), e);
                }) : d(n, r);
                var p = a ? l ? "\n" : "<br/>" : "", v = p + s.join(p || ", ");
                return {
                    renderMode: i,
                    content: v,
                    style: u
                };
            }
            function a(t) {
                return {
                    renderMode: i,
                    content: To(So(t)),
                    style: u
                };
            }
            var o = this;
            i = i || "html";
            var s = "html" === i ? "<br/>" : "\n", l = "richText" === i, u = {}, h = 0, c = this.getData(), f = c.mapDimension("defaultedTooltip", !0), p = f.length, v = this.getRawValue(t), m = x(v), y = c.getItemVisual(t, "color");
            S(y) && y.colorStops && (y = (y.colorStops[0] || {}).color), y = y || "transparent";
            var _ = p > 1 || m && !p ? r(v) : a(p ? zs(c, t, f[0]) : m ? v[0] : v), w = _.content, b = o.seriesIndex + "at" + h, M = Io({
                color: y,
                type: "item",
                renderMode: i,
                markerId: b
            });
            u[b] = y, ++h;
            var T = c.getName(t), C = this.name;
            qi(this) || (C = ""), C = C ? To(C) + (e ? ": " : s) : "";
            var k = "string" == typeof M ? M : M.content, I = e ? k + C + w : C + k + (T ? To(T) + ": " + w : w);
            return {
                html: I,
                markers: u
            };
        },
        isAnimationEnabled: function() {
            if (Qc.node) return !1;
            var t = this.getShallow("animation");
            return t && this.getData().count() > this.getShallow("animationThreshold") && (t = !1), 
            t;
        },
        restoreData: function() {
            this.dataTask.dirty();
        },
        getColorFromPalette: function(t, e, n) {
            var i = this.ecModel, r = Rv.getColorFromPalette.call(this, t, e, n);
            return r || (r = i.getColorFromPalette(t, e, n)), r;
        },
        coordDimToDataDim: function(t) {
            return this.getRawData().mapDimension(t, !0);
        },
        getProgressive: function() {
            return this.get("progressive");
        },
        getProgressiveThreshold: function() {
            return this.get("progressiveThreshold");
        },
        getAxisTooltipData: null,
        getTooltipPosition: null,
        pipeTask: null,
        preventIncremental: null,
        pipelineContext: null
    });
    c(xm, vm), c(xm, Rv);
    var wm = function() {
        this.group = new fd(), this.uid = eo("viewComponent");
    };
    wm.prototype = {
        constructor: wm,
        init: function() {},
        render: function() {},
        dispose: function() {},
        filterForExposedEvent: null
    };
    var bm = wm.prototype;
    bm.updateView = bm.updateLayout = bm.updateVisual = function() {}, nr(wm), or(wm, {
        registerWhenExtend: !0
    });
    var Sm = function() {
        var t = Yi();
        return function(e) {
            var n = t(e), i = e.pipelineContext, r = n.large, a = n.progressiveRender, o = n.large = i.large, s = n.progressiveRender = i.progressiveRender;
            return !!(r ^ o || a ^ s) && "reset";
        };
    }, Mm = Yi(), Tm = Sm();
    Zs.prototype = {
        type: "chart",
        init: function() {},
        render: function() {},
        highlight: function(t, e, n, i) {
            Ks(t.getData(), i, "emphasis");
        },
        downplay: function(t, e, n, i) {
            Ks(t.getData(), i, "normal");
        },
        remove: function() {
            this.group.removeAll();
        },
        dispose: function() {},
        incrementalPrepareRender: null,
        incrementalRender: null,
        updateTransform: null,
        filterForExposedEvent: null
    };
    var Cm = Zs.prototype;
    Cm.updateView = Cm.updateLayout = Cm.updateVisual = function(t, e, n, i) {
        this.render(t, e, n, i);
    }, nr(Zs, [ "dispose" ]), or(Zs, {
        registerWhenExtend: !0
    }), Zs.markUpdateMethod = function(t, e) {
        Mm(t).updateMethod = e;
    };
    var km = {
        incrementalPrepareRender: {
            progress: function(t, e) {
                e.view.incrementalRender(t, e.model, e.ecModel, e.api, e.payload);
            }
        },
        render: {
            forceFirstProgress: !0,
            progress: function(t, e) {
                e.view.render(e.model, e.ecModel, e.api, e.payload);
            }
        }
    }, Im = {
        createOnAllSeries: !0,
        performRawSeries: !0,
        reset: function(t, e) {
            var n = t.getData(), i = (t.visualColorAccessPath || "itemStyle.color").split("."), r = t.get(i) || t.getColorFromPalette(t.name, null, e.getSeriesCount());
            n.setVisual("color", r);
            var a = (t.visualBorderColorAccessPath || "itemStyle.borderColor").split("."), o = t.get(a);
            if (n.setVisual("borderColor", o), !e.isSeriesFiltered(t)) {
                "function" != typeof r || r instanceof qg || n.each(function(e) {
                    n.setItemVisual(e, "color", r(t.getDataParams(e)));
                });
                var s = function(t, e) {
                    var n = t.getItemModel(e), r = n.get(i, !0), o = n.get(a, !0);
                    null != r && t.setItemVisual(e, "color", r), null != o && t.setItemVisual(e, "borderColor", o);
                };
                return {
                    dataEach: n.hasItemOption ? s : null
                };
            }
        }
    }, Dm = {
        legend: {
            selector: {
                all: "全选",
                inverse: "反选"
            }
        },
        toolbox: {
            brush: {
                title: {
                    rect: "矩形选择",
                    polygon: "圈选",
                    lineX: "横向选择",
                    lineY: "纵向选择",
                    keep: "保持选择",
                    clear: "清除选择"
                }
            },
            dataView: {
                title: "数据视图",
                lang: [ "数据视图", "关闭", "刷新" ]
            },
            dataZoom: {
                title: {
                    zoom: "区域缩放",
                    back: "区域缩放还原"
                }
            },
            magicType: {
                title: {
                    line: "切换为折线图",
                    bar: "切换为柱状图",
                    stack: "切换为堆叠",
                    tiled: "切换为平铺"
                }
            },
            restore: {
                title: "还原"
            },
            saveAsImage: {
                title: "保存为图片",
                lang: [ "右键另存为图片" ]
            }
        },
        series: {
            typeNames: {
                pie: "饼图",
                bar: "柱状图",
                line: "折线图",
                scatter: "散点图",
                effectScatter: "涟漪散点图",
                radar: "雷达图",
                tree: "树图",
                treemap: "矩形树图",
                boxplot: "箱型图",
                candlestick: "K线图",
                k: "K线图",
                heatmap: "热力图",
                map: "地图",
                parallel: "平行坐标图",
                lines: "线图",
                graph: "关系图",
                sankey: "桑基图",
                funnel: "漏斗图",
                gauge: "仪表盘图",
                pictorialBar: "象形柱图",
                themeRiver: "主题河流图",
                sunburst: "旭日图"
            }
        },
        aria: {
            general: {
                withTitle: "这是一个关于“{title}”的图表。",
                withoutTitle: "这是一个图表，"
            },
            series: {
                single: {
                    prefix: "",
                    withName: "图表类型是{seriesType}，表示{seriesName}。",
                    withoutName: "图表类型是{seriesType}。"
                },
                multiple: {
                    prefix: "它由{seriesCount}个图表系列组成。",
                    withName: "第{seriesId}个系列是一个表示{seriesName}的{seriesType}，",
                    withoutName: "第{seriesId}个系列是一个{seriesType}，",
                    separator: {
                        middle: "；",
                        end: "。"
                    }
                }
            },
            data: {
                allData: "其数据是——",
                partialData: "其中，前{displayCnt}项是——",
                withName: "{name}的数据是{value}",
                withoutName: "{value}",
                separator: {
                    middle: "，",
                    end: ""
                }
            }
        }
    }, Am = function(t, e) {
        function n(t, e) {
            if ("string" != typeof t) return t;
            var n = t;
            return d(e, function(t, e) {
                n = n.replace(new RegExp("\\{\\s*" + e + "\\s*\\}", "g"), t);
            }), n;
        }
        function i(t) {
            var e = o.get(t);
            if (null == e) {
                for (var n = t.split("."), i = Dm.aria, r = 0; r < n.length; ++r) i = i[n[r]];
                return i;
            }
            return e;
        }
        function r() {
            var t = e.getModel("title").option;
            return t && t.length && (t = t[0]), t && t.text;
        }
        function a(t) {
            return Dm.series.typeNames[t] || "自定义图";
        }
        var o = e.getModel("aria");
        if (o.get("show")) {
            if (o.get("description")) return void t.setAttribute("aria-label", o.get("description"));
            var s = 0;
            e.eachSeries(function() {
                ++s;
            }, this);
            var l, u = o.get("data.maxCount") || 10, h = o.get("series.maxCount") || 10, c = Math.min(s, h);
            if (!(1 > s)) {
                var f = r();
                l = f ? n(i("general.withTitle"), {
                    title: f
                }) : i("general.withoutTitle");
                var p = [], g = s > 1 ? "series.multiple.prefix" : "series.single.prefix";
                l += n(i(g), {
                    seriesCount: s
                }), e.eachSeries(function(t, e) {
                    if (c > e) {
                        var r, o = t.get("name"), l = "series." + (s > 1 ? "multiple" : "single") + ".";
                        r = i(o ? l + "withName" : l + "withoutName"), r = n(r, {
                            seriesId: t.seriesIndex,
                            seriesName: t.get("name"),
                            seriesType: a(t.subType)
                        });
                        var h = t.getData();
                        window.data = h, r += h.count() > u ? n(i("data.partialData"), {
                            displayCnt: u
                        }) : i("data.allData");
                        for (var f = [], d = 0; d < h.count(); d++) if (u > d) {
                            var g = h.getName(d), v = zs(h, d);
                            f.push(n(i(g ? "data.withName" : "data.withoutName"), {
                                name: g,
                                value: v
                            }));
                        }
                        r += f.join(i("data.separator.middle")) + i("data.separator.end"), p.push(r);
                    }
                }), l += p.join(i("series.multiple.separator.middle")) + i("series.multiple.separator.end"), 
                t.setAttribute("aria-label", l);
            }
        }
    }, Pm = Math.PI, Om = function(t, e) {
        e = e || {}, s(e, {
            text: "loading",
            color: "#c23531",
            textColor: "#000",
            maskColor: "rgba(255, 255, 255, 0.8)",
            zlevel: 0
        });
        var n = new Fg({
            style: {
                fill: e.maskColor
            },
            zlevel: e.zlevel,
            z: 1e4
        }), i = new Gg({
            shape: {
                startAngle: -Pm / 2,
                endAngle: -Pm / 2 + .1,
                r: 10
            },
            style: {
                stroke: e.color,
                lineCap: "round",
                lineWidth: 5
            },
            zlevel: e.zlevel,
            z: 10001
        }), r = new Fg({
            style: {
                fill: "none",
                text: e.text,
                textPosition: "right",
                textDistance: 10,
                textFill: e.textColor
            },
            zlevel: e.zlevel,
            z: 10001
        });
        i.animateShape(!0).when(1e3, {
            endAngle: 3 * Pm / 2
        }).start("circularInOut"), i.animateShape(!0).when(1e3, {
            startAngle: 3 * Pm / 2
        }).delay(300).start("circularInOut");
        var a = new fd();
        return a.add(i), a.add(r), a.add(n), a.resize = function() {
            var e = t.getWidth() / 2, a = t.getHeight() / 2;
            i.setShape({
                cx: e,
                cy: a
            });
            var o = i.shape.r;
            r.setShape({
                x: e - o,
                y: a - o,
                width: 2 * o,
                height: 2 * o
            }), n.setShape({
                x: 0,
                y: 0,
                width: t.getWidth(),
                height: t.getHeight()
            });
        }, a.resize(), a;
    }, Lm = el.prototype;
    Lm.restoreData = function(t, e) {
        t.restoreData(e), this._stageTaskMap.each(function(t) {
            var e = t.overallTask;
            e && e.dirty();
        });
    }, Lm.getPerformArgs = function(t, e) {
        if (t.__pipeline) {
            var n = this._pipelineMap.get(t.__pipeline.id), i = n.context, r = !e && n.progressiveEnabled && (!i || i.progressiveRender) && t.__idxInPipeline > n.blockIndex, a = r ? n.step : null, o = i && i.modDataCount, s = null != o ? Math.ceil(o / a) : null;
            return {
                step: a,
                modBy: s,
                modDataCount: o
            };
        }
    }, Lm.getPipeline = function(t) {
        return this._pipelineMap.get(t);
    }, Lm.updateStreamModes = function(t, e) {
        var n = this._pipelineMap.get(t.uid), i = t.getData(), r = i.count(), a = n.progressiveEnabled && e.incrementalPrepareRender && r >= n.threshold, o = t.get("large") && r >= t.get("largeThreshold"), s = "mod" === t.get("progressiveChunkMode") ? r : null;
        t.pipelineContext = n.context = {
            progressiveRender: a,
            modDataCount: s,
            large: o
        };
    }, Lm.restorePipelines = function(t) {
        var e = this, n = e._pipelineMap = F();
        t.eachSeries(function(t) {
            var i = t.getProgressive(), r = t.uid;
            n.set(r, {
                id: r,
                head: null,
                tail: null,
                threshold: t.getProgressiveThreshold(),
                progressiveEnabled: i && !(t.preventIncremental && t.preventIncremental()),
                blockIndex: -1,
                step: Math.round(i || 700),
                count: 0
            }), dl(e, t, t.dataTask);
        });
    }, Lm.prepareStageTasks = function() {
        var t = this._stageTaskMap, e = this.ecInstance.getModel(), n = this.api;
        d(this._allHandlers, function(i) {
            var r = t.get(i.uid) || t.set(i.uid, []);
            i.reset && il(this, i, r, e, n), i.overallReset && rl(this, i, r, e, n);
        }, this);
    }, Lm.prepareView = function(t, e, n, i) {
        var r = t.renderTask, a = r.context;
        a.model = e, a.ecModel = n, a.api = i, r.__block = !t.incrementalPrepareRender, 
        dl(this, e, r);
    }, Lm.performDataProcessorTasks = function(t, e) {
        nl(this, this._dataProcessorHandlers, t, e, {
            block: !0
        });
    }, Lm.performVisualTasks = function(t, e, n) {
        nl(this, this._visualHandlers, t, e, n);
    }, Lm.performSeriesTasks = function(t) {
        var e;
        t.eachSeries(function(t) {
            e |= t.dataTask.perform();
        }), this.unfinished |= e;
    }, Lm.plan = function() {
        this._pipelineMap.each(function(t) {
            var e = t.tail;
            do {
                if (e.__block) {
                    t.blockIndex = e.__idxInPipeline;
                    break;
                }
                e = e.getUpstream();
            } while (e);
        });
    };
    var Em = Lm.updatePayload = function(t, e) {
        "remain" !== e && (t.context.payload = e);
    }, Bm = cl(0);
    el.wrapStageHandler = function(t, e) {
        return w(t) && (t = {
            overallReset: t,
            seriesType: pl(t)
        }), t.uid = eo("stageHandler"), e && (t.visualType = e), t;
    };
    var zm, Rm = {}, Fm = {};
    gl(Rm, Zv), gl(Fm, us), Rm.eachSeriesByType = Rm.eachRawSeriesByType = function(t) {
        zm = t;
    }, Rm.eachComponent = function(t) {
        "series" === t.mainType && t.subType && (zm = t.subType);
    };
    var Nm = [ "#37A2DA", "#32C5E9", "#67E0E3", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#E062AE", "#E690D1", "#e7bcf3", "#9d96f5", "#8378EA", "#96BFFF" ], Vm = {
        color: Nm,
        colorLayer: [ [ "#37A2DA", "#ffd85c", "#fd7b5f" ], [ "#37A2DA", "#67E0E3", "#FFDB5C", "#ff9f7f", "#E062AE", "#9d96f5" ], [ "#37A2DA", "#32C5E9", "#9FE6B8", "#FFDB5C", "#ff9f7f", "#fb7293", "#e7bcf3", "#8378EA", "#96BFFF" ], Nm ]
    }, Hm = "#eee", Wm = function() {
        return {
            axisLine: {
                lineStyle: {
                    color: Hm
                }
            },
            axisTick: {
                lineStyle: {
                    color: Hm
                }
            },
            axisLabel: {
                textStyle: {
                    color: Hm
                }
            },
            splitLine: {
                lineStyle: {
                    type: "dashed",
                    color: "#aaa"
                }
            },
            splitArea: {
                areaStyle: {
                    color: Hm
                }
            }
        };
    }, Gm = [ "#dd6b66", "#759aa0", "#e69d87", "#8dc1a9", "#ea7e53", "#eedd78", "#73a373", "#73b9bc", "#7289ab", "#91ca8c", "#f49f42" ], Xm = {
        color: Gm,
        backgroundColor: "#333",
        tooltip: {
            axisPointer: {
                lineStyle: {
                    color: Hm
                },
                crossStyle: {
                    color: Hm
                }
            }
        },
        legend: {
            textStyle: {
                color: Hm
            }
        },
        textStyle: {
            color: Hm
        },
        title: {
            textStyle: {
                color: Hm
            }
        },
        toolbox: {
            iconStyle: {
                normal: {
                    borderColor: Hm
                }
            }
        },
        dataZoom: {
            textStyle: {
                color: Hm
            }
        },
        visualMap: {
            textStyle: {
                color: Hm
            }
        },
        timeline: {
            lineStyle: {
                color: Hm
            },
            itemStyle: {
                normal: {
                    color: Gm[1]
                }
            },
            label: {
                normal: {
                    textStyle: {
                        color: Hm
                    }
                }
            },
            controlStyle: {
                normal: {
                    color: Hm,
                    borderColor: Hm
                }
            }
        },
        timeAxis: Wm(),
        logAxis: Wm(),
        valueAxis: Wm(),
        categoryAxis: Wm(),
        line: {
            symbol: "circle"
        },
        graph: {
            color: Gm
        },
        gauge: {
            title: {
                textStyle: {
                    color: Hm
                }
            }
        },
        candlestick: {
            itemStyle: {
                normal: {
                    color: "#FD1050",
                    color0: "#0CF49B",
                    borderColor: "#FD1050",
                    borderColor0: "#0CF49B"
                }
            }
        }
    };
    Xm.categoryAxis.splitLine.show = !1, Lv.extend({
        type: "dataset",
        defaultOption: {
            seriesLayoutBy: qv,
            sourceHeader: null,
            dimensions: null,
            source: null
        },
        optionUpdated: function() {
            Xo(this);
        }
    }), wm.extend({
        type: "dataset"
    });
    var qm = Vr.extend({
        type: "ellipse",
        shape: {
            cx: 0,
            cy: 0,
            rx: 0,
            ry: 0
        },
        buildPath: function(t, e) {
            var n = .5522848, i = e.cx, r = e.cy, a = e.rx, o = e.ry, s = a * n, l = o * n;
            t.moveTo(i - a, r), t.bezierCurveTo(i - a, r - l, i - s, r - o, i, r - o), t.bezierCurveTo(i + s, r - o, i + a, r - l, i + a, r), 
            t.bezierCurveTo(i + a, r + l, i + s, r + o, i, r + o), t.bezierCurveTo(i - s, r + o, i - a, r + l, i - a, r), 
            t.closePath();
        }
    }), jm = /[\s,]+/;
    ml.prototype.parse = function(t, e) {
        e = e || {};
        var n = vl(t);
        if (!n) throw new Error("Illegal svg");
        var i = new fd();
        this._root = i;
        var r = n.getAttribute("viewBox") || "", a = parseFloat(n.getAttribute("width") || e.width), o = parseFloat(n.getAttribute("height") || e.height);
        isNaN(a) && (a = null), isNaN(o) && (o = null), wl(n, i, null, !0);
        for (var s = n.firstChild; s; ) this._parseNode(s, i), s = s.nextSibling;
        var l, u;
        if (r) {
            var h = E(r).split(jm);
            h.length >= 4 && (l = {
                x: parseFloat(h[0] || 0),
                y: parseFloat(h[1] || 0),
                width: parseFloat(h[2]),
                height: parseFloat(h[3])
            });
        }
        if (l && null != a && null != o && (u = Tl(l, a, o), !e.ignoreViewBox)) {
            var c = i;
            i = new fd(), i.add(c), c.scale = u.scale.slice(), c.position = u.position.slice();
        }
        return e.ignoreRootClip || null == a || null == o || i.setClipPath(new Fg({
            shape: {
                x: 0,
                y: 0,
                width: a,
                height: o
            }
        })), {
            root: i,
            width: a,
            height: o,
            viewBoxRect: l,
            viewBoxTransform: u
        };
    }, ml.prototype._parseNode = function(t, e) {
        var n = t.nodeName.toLowerCase();
        "defs" === n ? this._isDefine = !0 : "text" === n && (this._isText = !0);
        var i;
        if (this._isDefine) {
            var r = Ym[n];
            if (r) {
                var a = r.call(this, t), o = t.getAttribute("id");
                o && (this._defs[o] = a);
            }
        } else {
            var r = Um[n];
            r && (i = r.call(this, t, e), e.add(i));
        }
        for (var s = t.firstChild; s; ) 1 === s.nodeType && this._parseNode(s, i), 3 === s.nodeType && this._isText && this._parseText(s, i), 
        s = s.nextSibling;
        "defs" === n ? this._isDefine = !1 : "text" === n && (this._isText = !1);
    }, ml.prototype._parseText = function(t, e) {
        if (1 === t.nodeType) {
            var n = t.getAttribute("dx") || 0, i = t.getAttribute("dy") || 0;
            this._textX += parseFloat(n), this._textY += parseFloat(i);
        }
        var r = new Cg({
            style: {
                text: t.textContent,
                transformText: !0
            },
            position: [ this._textX || 0, this._textY || 0 ]
        });
        _l(e, r), wl(t, r, this._defs);
        var a = r.style.fontSize;
        a && 9 > a && (r.style.fontSize = 9, r.scale = r.scale || [ 1, 1 ], r.scale[0] *= a / 9, 
        r.scale[1] *= a / 9);
        var o = r.getBoundingRect();
        return this._textX += o.width, e.add(r), r;
    };
    var Um = {
        g: function(t, e) {
            var n = new fd();
            return _l(e, n), wl(t, n, this._defs), n;
        },
        rect: function(t, e) {
            var n = new Fg();
            return _l(e, n), wl(t, n, this._defs), n.setShape({
                x: parseFloat(t.getAttribute("x") || 0),
                y: parseFloat(t.getAttribute("y") || 0),
                width: parseFloat(t.getAttribute("width") || 0),
                height: parseFloat(t.getAttribute("height") || 0)
            }), n;
        },
        circle: function(t, e) {
            var n = new kg();
            return _l(e, n), wl(t, n, this._defs), n.setShape({
                cx: parseFloat(t.getAttribute("cx") || 0),
                cy: parseFloat(t.getAttribute("cy") || 0),
                r: parseFloat(t.getAttribute("r") || 0)
            }), n;
        },
        line: function(t, e) {
            var n = new Vg();
            return _l(e, n), wl(t, n, this._defs), n.setShape({
                x1: parseFloat(t.getAttribute("x1") || 0),
                y1: parseFloat(t.getAttribute("y1") || 0),
                x2: parseFloat(t.getAttribute("x2") || 0),
                y2: parseFloat(t.getAttribute("y2") || 0)
            }), n;
        },
        ellipse: function(t, e) {
            var n = new qm();
            return _l(e, n), wl(t, n, this._defs), n.setShape({
                cx: parseFloat(t.getAttribute("cx") || 0),
                cy: parseFloat(t.getAttribute("cy") || 0),
                rx: parseFloat(t.getAttribute("rx") || 0),
                ry: parseFloat(t.getAttribute("ry") || 0)
            }), n;
        },
        polygon: function(t, e) {
            var n = t.getAttribute("points");
            n && (n = xl(n));
            var i = new Eg({
                shape: {
                    points: n || []
                }
            });
            return _l(e, i), wl(t, i, this._defs), i;
        },
        polyline: function(t, e) {
            var n = new Vr();
            _l(e, n), wl(t, n, this._defs);
            var i = t.getAttribute("points");
            i && (i = xl(i));
            var r = new Bg({
                shape: {
                    points: i || []
                }
            });
            return r;
        },
        image: function(t, e) {
            var n = new bi();
            return _l(e, n), wl(t, n, this._defs), n.setStyle({
                image: t.getAttribute("xlink:href"),
                x: t.getAttribute("x"),
                y: t.getAttribute("y"),
                width: t.getAttribute("width"),
                height: t.getAttribute("height")
            }), n;
        },
        text: function(t, e) {
            var n = t.getAttribute("x") || 0, i = t.getAttribute("y") || 0, r = t.getAttribute("dx") || 0, a = t.getAttribute("dy") || 0;
            this._textX = parseFloat(n) + parseFloat(r), this._textY = parseFloat(i) + parseFloat(a);
            var o = new fd();
            return _l(e, o), wl(t, o, this._defs), o;
        },
        tspan: function(t, e) {
            var n = t.getAttribute("x"), i = t.getAttribute("y");
            null != n && (this._textX = parseFloat(n)), null != i && (this._textY = parseFloat(i));
            var r = t.getAttribute("dx") || 0, a = t.getAttribute("dy") || 0, o = new fd();
            return _l(e, o), wl(t, o, this._defs), this._textX += r, this._textY += a, o;
        },
        path: function(t, e) {
            var n = t.getAttribute("d") || "", i = Xr(n);
            return _l(e, i), wl(t, i, this._defs), i;
        }
    }, Ym = {
        lineargradient: function(t) {
            var e = parseInt(t.getAttribute("x1") || 0, 10), n = parseInt(t.getAttribute("y1") || 0, 10), i = parseInt(t.getAttribute("x2") || 10, 10), r = parseInt(t.getAttribute("y2") || 0, 10), a = new jg(e, n, i, r);
            return yl(t, a), a;
        },
        radialgradient: function() {}
    }, Zm = {
        fill: "fill",
        stroke: "stroke",
        "stroke-width": "lineWidth",
        opacity: "opacity",
        "fill-opacity": "fillOpacity",
        "stroke-opacity": "strokeOpacity",
        "stroke-dasharray": "lineDash",
        "stroke-dashoffset": "lineDashOffset",
        "stroke-linecap": "lineCap",
        "stroke-linejoin": "lineJoin",
        "stroke-miterlimit": "miterLimit",
        "font-family": "fontFamily",
        "font-size": "fontSize",
        "font-style": "fontStyle",
        "font-weight": "fontWeight",
        "text-align": "textAlign",
        "alignment-baseline": "textBaseline"
    }, $m = /url\(\s*#(.*?)\)/, Km = /(translate|scale|rotate|skewX|skewY|matrix)\(([\-\s0-9\.e,]*)\)/g, Qm = /([^\s:;]+)\s*:\s*([^:;]+)/g, Jm = F(), ty = {
        registerMap: function(t, e, n) {
            var i;
            return x(e) ? i = e : e.svg ? i = [ {
                type: "svg",
                source: e.svg,
                specialAreas: e.specialAreas
            } ] : (e.geoJson && !e.features && (n = e.specialAreas, e = e.geoJson), i = [ {
                type: "geoJSON",
                source: e,
                specialAreas: n
            } ]), d(i, function(t) {
                var e = t.type;
                "geoJson" === e && (e = t.type = "geoJSON");
                var n = ey[e];
                n(t);
            }), Jm.set(t, i);
        },
        retrieveMap: function(t) {
            return Jm.get(t);
        }
    }, ey = {
        geoJSON: function(t) {
            var e = t.source;
            t.geoJSON = b(e) ? "undefined" != typeof JSON && JSON.parse ? JSON.parse(e) : new Function("return (" + e + ");")() : e;
        },
        svg: function(t) {
            t.svgXML = vl(t.source);
        }
    }, ny = L, iy = d, ry = w, ay = S, oy = Lv.parseClassType, sy = "4.4.0", ly = {
        zrender: "4.1.1"
    }, uy = 1, hy = 1e3, cy = 800, fy = 900, dy = 5e3, py = 1e3, gy = 1100, vy = 2e3, my = 3e3, yy = 3500, _y = 4e3, xy = 5e3, wy = {
        PROCESSOR: {
            FILTER: hy,
            SERIES_FILTER: cy,
            STATISTIC: dy
        },
        VISUAL: {
            LAYOUT: py,
            PROGRESSIVE_LAYOUT: gy,
            GLOBAL: vy,
            CHART: my,
            POST_CHART_LAYOUT: yy,
            COMPONENT: _y,
            BRUSH: xy
        }
    }, by = "__flagInMainProcess", Sy = "__optionUpdated", My = /^[a-zA-Z0-9_]+$/;
    kl.prototype.on = Cl("on", !0), kl.prototype.off = Cl("off", !0), kl.prototype.one = Cl("one", !0), 
    c(kl, wf);
    var Ty = Il.prototype;
    Ty._onframe = function() {
        if (!this._disposed) {
            var t = this._scheduler;
            if (this[Sy]) {
                var e = this[Sy].silent;
                this[by] = !0, Al(this), Cy.update.call(this), this[by] = !1, this[Sy] = !1, El.call(this, e), 
                Bl.call(this, e);
            } else if (t.unfinished) {
                var n = uy, i = this._model, r = this._api;
                t.unfinished = !1;
                do {
                    var a = +new Date();
                    t.performSeriesTasks(i), t.performDataProcessorTasks(i), Ol(this, i), t.performVisualTasks(i), 
                    Hl(this, this._model, r, "remain"), n -= +new Date() - a;
                } while (n > 0 && t.unfinished);
                t.unfinished || this._zr.flush();
            }
        }
    }, Ty.getDom = function() {
        return this._dom;
    }, Ty.getZr = function() {
        return this._zr;
    }, Ty.setOption = function(t, e, n) {
        if (!this._disposed) {
            var i;
            if (ay(e) && (n = e.lazyUpdate, i = e.silent, e = e.notMerge), this[by] = !0, !this._model || e) {
                var r = new cs(this._api), a = this._theme, o = this._model = new Zv();
                o.scheduler = this._scheduler, o.init(null, null, a, r);
            }
            this._model.setOption(t, Py), n ? (this[Sy] = {
                silent: i
            }, this[by] = !1) : (Al(this), Cy.update.call(this), this._zr.flush(), this[Sy] = !1, 
            this[by] = !1, El.call(this, i), Bl.call(this, i));
        }
    }, Ty.setTheme = function() {
        console.error("ECharts#setTheme() is DEPRECATED in ECharts 3.0");
    }, Ty.getModel = function() {
        return this._model;
    }, Ty.getOption = function() {
        return this._model && this._model.getOption();
    }, Ty.getWidth = function() {
        return this._zr.getWidth();
    }, Ty.getHeight = function() {
        return this._zr.getHeight();
    }, Ty.getDevicePixelRatio = function() {
        return this._zr.painter.dpr || window.devicePixelRatio || 1;
    }, Ty.getRenderedCanvas = function(t) {
        if (Qc.canvasSupported) {
            t = t || {}, t.pixelRatio = t.pixelRatio || 1, t.backgroundColor = t.backgroundColor || this._model.get("backgroundColor");
            var e = this._zr;
            return e.painter.getRenderedCanvas(t);
        }
    }, Ty.getSvgDataUrl = function() {
        if (Qc.svgSupported) {
            var t = this._zr, e = t.storage.getDisplayList();
            return d(e, function(t) {
                t.stopAnimation(!0);
            }), t.painter.pathToDataUrl();
        }
    }, Ty.getDataURL = function(t) {
        if (!this._disposed) {
            t = t || {};
            var e = t.excludeComponents, n = this._model, i = [], r = this;
            iy(e, function(t) {
                n.eachComponent({
                    mainType: t
                }, function(t) {
                    var e = r._componentsMap[t.__viewId];
                    e.group.ignore || (i.push(e), e.group.ignore = !0);
                });
            });
            var a = "svg" === this._zr.painter.getType() ? this.getSvgDataUrl() : this.getRenderedCanvas(t).toDataURL("image/" + (t && t.type || "png"));
            return iy(i, function(t) {
                t.group.ignore = !1;
            }), a;
        }
    }, Ty.getConnectedDataURL = function(t) {
        if (!this._disposed && Qc.canvasSupported) {
            var e = this.group, n = Math.min, r = Math.max, a = 1 / 0;
            if (Ry[e]) {
                var o = a, s = a, l = -a, u = -a, h = [], c = t && t.pixelRatio || 1;
                d(zy, function(a) {
                    if (a.group === e) {
                        var c = a.getRenderedCanvas(i(t)), f = a.getDom().getBoundingClientRect();
                        o = n(f.left, o), s = n(f.top, s), l = r(f.right, l), u = r(f.bottom, u), h.push({
                            dom: c,
                            left: f.left,
                            top: f.top
                        });
                    }
                }), o *= c, s *= c, l *= c, u *= c;
                var f = l - o, p = u - s, g = hf();
                g.width = f, g.height = p;
                var v = Ei(g);
                return t.connectedBackgroundColor && v.add(new Fg({
                    shape: {
                        x: 0,
                        y: 0,
                        width: f,
                        height: p
                    },
                    style: {
                        fill: t.connectedBackgroundColor
                    }
                })), iy(h, function(t) {
                    var e = new bi({
                        style: {
                            x: t.left * c - o,
                            y: t.top * c - s,
                            image: t.dom
                        }
                    });
                    v.add(e);
                }), v.refreshImmediately(), g.toDataURL("image/" + (t && t.type || "png"));
            }
            return this.getDataURL(t);
        }
    }, Ty.convertToPixel = _(Dl, "convertToPixel"), Ty.convertFromPixel = _(Dl, "convertFromPixel"), 
    Ty.containPixel = function(t, e) {
        if (!this._disposed) {
            var n, i = this._model;
            return t = Zi(i, t), d(t, function(t, i) {
                i.indexOf("Models") >= 0 && d(t, function(t) {
                    var r = t.coordinateSystem;
                    if (r && r.containPoint) n |= !!r.containPoint(e); else if ("seriesModels" === i) {
                        var a = this._chartsMap[t.__viewId];
                        a && a.containPoint && (n |= a.containPoint(e, t));
                    }
                }, this);
            }, this), !!n;
        }
    }, Ty.getVisual = function(t, e) {
        var n = this._model;
        t = Zi(n, t, {
            defaultMainType: "series"
        });
        var i = t.seriesModel, r = i.getData(), a = t.hasOwnProperty("dataIndexInside") ? t.dataIndexInside : t.hasOwnProperty("dataIndex") ? r.indexOfRawIndex(t.dataIndex) : null;
        return null != a ? r.getItemVisual(a, e) : r.getVisual(e);
    }, Ty.getViewOfComponentModel = function(t) {
        return this._componentsMap[t.__viewId];
    }, Ty.getViewOfSeriesModel = function(t) {
        return this._chartsMap[t.__viewId];
    };
    var Cy = {
        prepareAndUpdate: function(t) {
            Al(this), Cy.update.call(this, t);
        },
        update: function(t) {
            var e = this._model, n = this._api, i = this._zr, r = this._coordSysMgr, a = this._scheduler;
            if (e) {
                a.restoreData(e, t), a.performSeriesTasks(e), r.create(e, n), a.performDataProcessorTasks(e, t), 
                Ol(this, e), r.update(e, n), Fl(e), a.performVisualTasks(e, t), Nl(this, e, n, t);
                var o = e.get("backgroundColor") || "transparent";
                if (Qc.canvasSupported) i.setBackgroundColor(o); else {
                    var s = Ye(o);
                    o = rn(s, "rgb"), 0 === s[3] && (o = "transparent");
                }
                Wl(e, n);
            }
        },
        updateTransform: function(t) {
            var e = this._model, n = this, i = this._api;
            if (e) {
                var r = [];
                e.eachComponent(function(a, o) {
                    var s = n.getViewOfComponentModel(o);
                    if (s && s.__alive) if (s.updateTransform) {
                        var l = s.updateTransform(o, e, i, t);
                        l && l.update && r.push(s);
                    } else r.push(s);
                });
                var a = F();
                e.eachSeries(function(r) {
                    var o = n._chartsMap[r.__viewId];
                    if (o.updateTransform) {
                        var s = o.updateTransform(r, e, i, t);
                        s && s.update && a.set(r.uid, 1);
                    } else a.set(r.uid, 1);
                }), Fl(e), this._scheduler.performVisualTasks(e, t, {
                    setDirty: !0,
                    dirtyMap: a
                }), Hl(n, e, i, t, a), Wl(e, this._api);
            }
        },
        updateView: function(t) {
            var e = this._model;
            e && (Zs.markUpdateMethod(t, "updateView"), Fl(e), this._scheduler.performVisualTasks(e, t, {
                setDirty: !0
            }), Nl(this, this._model, this._api, t), Wl(e, this._api));
        },
        updateVisual: function(t) {
            Cy.update.call(this, t);
        },
        updateLayout: function(t) {
            Cy.update.call(this, t);
        }
    };
    Ty.resize = function(t) {
        if (!this._disposed) {
            this._zr.resize(t);
            var e = this._model;
            if (this._loadingFX && this._loadingFX.resize(), e) {
                var n = e.resetOption("media"), i = t && t.silent;
                this[by] = !0, n && Al(this), Cy.update.call(this), this[by] = !1, El.call(this, i), 
                Bl.call(this, i);
            }
        }
    }, Ty.showLoading = function(t, e) {
        if (!this._disposed && (ay(t) && (e = t, t = ""), t = t || "default", this.hideLoading(), 
        By[t])) {
            var n = By[t](this._api, e), i = this._zr;
            this._loadingFX = n, i.add(n);
        }
    }, Ty.hideLoading = function() {
        this._disposed || (this._loadingFX && this._zr.remove(this._loadingFX), this._loadingFX = null);
    }, Ty.makeActionFromEvent = function(t) {
        var e = o({}, t);
        return e.type = Dy[t.type], e;
    }, Ty.dispatchAction = function(t, e) {
        if (!this._disposed && (ay(e) || (e = {
            silent: !!e
        }), Iy[t.type] && this._model)) {
            if (this[by]) return void this._pendingActions.push(t);
            Ll.call(this, t, e.silent), e.flush ? this._zr.flush(!0) : e.flush !== !1 && Qc.browser.weChat && this._throttledZrFlush(), 
            El.call(this, e.silent), Bl.call(this, e.silent);
        }
    }, Ty.appendData = function(t) {
        if (!this._disposed) {
            var e = t.seriesIndex, n = this.getModel(), i = n.getSeriesByIndex(e);
            i.appendData(t), this._scheduler.unfinished = !0;
        }
    }, Ty.on = Cl("on", !1), Ty.off = Cl("off", !1), Ty.one = Cl("one", !1);
    var ky = [ "click", "dblclick", "mouseover", "mouseout", "mousemove", "mousedown", "mouseup", "globalout", "contextmenu" ];
    Ty._initEvents = function() {
        iy(ky, function(t) {
            var e = function(e) {
                var n, i = this.getModel(), r = e.target, a = "globalout" === t;
                if (a) n = {}; else if (r && null != r.dataIndex) {
                    var s = r.dataModel || i.getSeriesByIndex(r.seriesIndex);
                    n = s && s.getDataParams(r.dataIndex, r.dataType, r) || {};
                } else r && r.eventData && (n = o({}, r.eventData));
                if (n) {
                    var l = n.componentType, u = n.componentIndex;
                    ("markLine" === l || "markPoint" === l || "markArea" === l) && (l = "series", u = n.seriesIndex);
                    var h = l && null != u && i.getComponent(l, u), c = h && this["series" === h.mainType ? "_chartsMap" : "_componentsMap"][h.__viewId];
                    n.event = e, n.type = t, this._ecEventProcessor.eventInfo = {
                        targetEl: r,
                        packedEvent: n,
                        model: h,
                        view: c
                    }, this.trigger(t, n);
                }
            };
            e.zrEventfulCallAtLast = !0, this._zr.on(t, e, this);
        }, this), iy(Dy, function(t, e) {
            this._messageCenter.on(e, function(t) {
                this.trigger(e, t);
            }, this);
        }, this);
    }, Ty.isDisposed = function() {
        return this._disposed;
    }, Ty.clear = function() {
        this._disposed || this.setOption({
            series: []
        }, !0);
    }, Ty.dispose = function() {
        if (!this._disposed) {
            this._disposed = !0, Ki(this.getDom(), Vy, "");
            var t = this._api, e = this._model;
            iy(this._componentsViews, function(n) {
                n.dispose(e, t);
            }), iy(this._chartsViews, function(n) {
                n.dispose(e, t);
            }), this._zr.dispose(), delete zy[this.id];
        }
    }, c(Il, wf), Ul.prototype = {
        constructor: Ul,
        normalizeQuery: function(t) {
            var e = {}, n = {}, i = {};
            if (b(t)) {
                var r = oy(t);
                e.mainType = r.main || null, e.subType = r.sub || null;
            } else {
                var a = [ "Index", "Name", "Id" ], o = {
                    name: 1,
                    dataIndex: 1,
                    dataType: 1
                };
                d(t, function(t, r) {
                    for (var s = !1, l = 0; l < a.length; l++) {
                        var u = a[l], h = r.lastIndexOf(u);
                        if (h > 0 && h === r.length - u.length) {
                            var c = r.slice(0, h);
                            "data" !== c && (e.mainType = c, e[u.toLowerCase()] = t, s = !0);
                        }
                    }
                    o.hasOwnProperty(r) && (n[r] = t, s = !0), s || (i[r] = t);
                });
            }
            return {
                cptQuery: e,
                dataQuery: n,
                otherQuery: i
            };
        },
        filter: function(t, e) {
            function n(t, e, n, i) {
                return null == t[n] || e[i || n] === t[n];
            }
            var i = this.eventInfo;
            if (!i) return !0;
            var r = i.targetEl, a = i.packedEvent, o = i.model, s = i.view;
            if (!o || !s) return !0;
            var l = e.cptQuery, u = e.dataQuery;
            return n(l, o, "mainType") && n(l, o, "subType") && n(l, o, "index", "componentIndex") && n(l, o, "name") && n(l, o, "id") && n(u, a, "name") && n(u, a, "dataIndex") && n(u, a, "dataType") && (!s.filterForExposedEvent || s.filterForExposedEvent(t, e.otherQuery, r, a));
        },
        afterTrigger: function() {
            this.eventInfo = null;
        }
    };
    var Iy = {}, Dy = {}, Ay = [], Py = [], Oy = [], Ly = [], Ey = {}, By = {}, zy = {}, Ry = {}, Fy = new Date() - 0, Ny = new Date() - 0, Vy = "_echarts_instance_", Hy = Kl;
    uu(vy, Im), nu(um), iu(fy, hm), cu("default", Om), au({
        type: "highlight",
        event: "highlight",
        update: "highlight"
    }, V), au({
        type: "downplay",
        event: "downplay",
        update: "downplay"
    }, V), eu("light", Vm), eu("dark", Xm);
    var Wy = {};
    xu.prototype = {
        constructor: xu,
        add: function(t) {
            return this._add = t, this;
        },
        update: function(t) {
            return this._update = t, this;
        },
        remove: function(t) {
            return this._remove = t, this;
        },
        execute: function() {
            var t, e = this._old, n = this._new, i = {}, r = {}, a = [], o = [];
            for (wu(e, i, a, "_oldKeyGetter", this), wu(n, r, o, "_newKeyGetter", this), t = 0; t < e.length; t++) {
                var s = a[t], l = r[s];
                if (null != l) {
                    var u = l.length;
                    u ? (1 === u && (r[s] = null), l = l.unshift()) : r[s] = null, this._update && this._update(l, t);
                } else this._remove && this._remove(t);
            }
            for (var t = 0; t < o.length; t++) {
                var s = o[t];
                if (r.hasOwnProperty(s)) {
                    var l = r[s];
                    if (null == l) continue;
                    if (l.length) for (var h = 0, u = l.length; u > h; h++) this._add && this._add(l[h]); else this._add && this._add(l);
                }
            }
        }
    };
    var Gy = F([ "tooltip", "label", "itemName", "itemId", "seriesName" ]), Xy = S, qy = "undefined", jy = -1, Uy = "e\0\0", Yy = {
        float: typeof Float64Array === qy ? Array : Float64Array,
        int: typeof Int32Array === qy ? Array : Int32Array,
        ordinal: Array,
        number: Array,
        time: Array
    }, Zy = typeof Uint32Array === qy ? Array : Uint32Array, $y = typeof Int32Array === qy ? Array : Int32Array, Ky = typeof Uint16Array === qy ? Array : Uint16Array, Qy = [ "hasItemOption", "_nameList", "_idList", "_invertedIndicesMap", "_rawData", "_chunkSize", "_chunkCount", "_dimValueGetter", "_count", "_rawCount", "_nameDimIdx", "_idDimIdx" ], Jy = [ "_extent", "_approximateExtent", "_rawExtent" ], t_ = function(t, e) {
        t = t || [ "x", "y" ];
        for (var n = {}, i = [], r = {}, a = 0; a < t.length; a++) {
            var o = t[a];
            b(o) && (o = {
                name: o
            });
            var s = o.name;
            o.type = o.type || "float", o.coordDim || (o.coordDim = s, o.coordDimIndex = 0), 
            o.otherDims = o.otherDims || {}, i.push(s), n[s] = o, o.index = a, o.createInvertedIndices && (r[s] = []);
        }
        this.dimensions = i, this._dimensionInfos = n, this.hostModel = e, this.dataType, 
        this._indices = null, this._count = 0, this._rawCount = 0, this._storage = {}, this._nameList = [], 
        this._idList = [], this._optionModels = [], this._visual = {}, this._layout = {}, 
        this._itemVisuals = [], this.hasItemVisual = {}, this._itemLayouts = [], this._graphicEls = [], 
        this._chunkSize = 1e5, this._chunkCount = 0, this._rawData, this._rawExtent = {}, 
        this._extent = {}, this._approximateExtent = {}, this._dimensionsSummary = bu(this), 
        this._invertedIndicesMap = r, this._calculationInfo = {}, this.userOutput = this._dimensionsSummary.userOutput;
    }, e_ = t_.prototype;
    e_.type = "list", e_.hasItemOption = !0, e_.getDimension = function(t) {
        return ("number" == typeof t || !isNaN(t) && !this._dimensionInfos.hasOwnProperty(t)) && (t = this.dimensions[t]), 
        t;
    }, e_.getDimensionInfo = function(t) {
        return this._dimensionInfos[this.getDimension(t)];
    }, e_.getDimensionsOnCoord = function() {
        return this._dimensionsSummary.dataDimsOnCoord.slice();
    }, e_.mapDimension = function(t, e) {
        var n = this._dimensionsSummary;
        if (null == e) return n.encodeFirstDimNotExtra[t];
        var i = n.encode[t];
        return e === !0 ? (i || []).slice() : i && i[e];
    }, e_.initData = function(t, e, n) {
        var i = Go.isInstance(t) || f(t);
        i && (t = new Ds(t, this.dimensions.length)), this._rawData = t, this._storage = {}, 
        this._indices = null, this._nameList = e || [], this._idList = [], this._nameRepeatCount = {}, 
        n || (this.hasItemOption = !1), this.defaultDimValueGetter = pm[this._rawData.getSource().sourceFormat], 
        this._dimValueGetter = n = n || this.defaultDimValueGetter, this._dimValueGetterArrayRows = pm.arrayRows, 
        this._rawExtent = {}, this._initDataFromProvider(0, t.count()), t.pure && (this.hasItemOption = !1);
    }, e_.getProvider = function() {
        return this._rawData;
    }, e_.appendData = function(t) {
        var e = this._rawData, n = this.count();
        e.appendData(t);
        var i = e.count();
        e.persistent || (i += n), this._initDataFromProvider(n, i);
    }, e_.appendValues = function(t, e) {
        for (var n = this._chunkSize, i = this._storage, r = this.dimensions, a = r.length, o = this._rawExtent, s = this.count(), l = s + Math.max(t.length, e ? e.length : 0), u = this._chunkCount, h = 0; a > h; h++) {
            var c = r[h];
            o[c] || (o[c] = Fu()), i[c] || (i[c] = []), Du(i, this._dimensionInfos[c], n, u, l), 
            this._chunkCount = i[c].length;
        }
        for (var f = new Array(a), d = s; l > d; d++) {
            for (var p = d - s, g = Math.floor(d / n), v = d % n, m = 0; a > m; m++) {
                var c = r[m], y = this._dimValueGetterArrayRows(t[p] || f, c, p, m);
                i[c][g][v] = y;
                var _ = o[c];
                y < _[0] && (_[0] = y), y > _[1] && (_[1] = y);
            }
            e && (this._nameList[d] = e[p]);
        }
        this._rawCount = this._count = l, this._extent = {}, Au(this);
    }, e_._initDataFromProvider = function(t, e) {
        if (!(t >= e)) {
            for (var n, i = this._chunkSize, r = this._rawData, a = this._storage, o = this.dimensions, s = o.length, l = this._dimensionInfos, u = this._nameList, h = this._idList, c = this._rawExtent, f = this._nameRepeatCount = {}, d = this._chunkCount, p = 0; s > p; p++) {
                var g = o[p];
                c[g] || (c[g] = Fu());
                var v = l[g];
                0 === v.otherDims.itemName && (n = this._nameDimIdx = p), 0 === v.otherDims.itemId && (this._idDimIdx = p), 
                a[g] || (a[g] = []), Du(a, v, i, d, e), this._chunkCount = a[g].length;
            }
            for (var m = new Array(s), y = t; e > y; y++) {
                m = r.getItem(y, m);
                for (var _ = Math.floor(y / i), x = y % i, w = 0; s > w; w++) {
                    var g = o[w], b = a[g][_], S = this._dimValueGetter(m, g, y, w);
                    b[x] = S;
                    var M = c[g];
                    S < M[0] && (M[0] = S), S > M[1] && (M[1] = S);
                }
                if (!r.pure) {
                    var T = u[y];
                    if (m && null == T) if (null != m.name) u[y] = T = m.name; else if (null != n) {
                        var C = o[n], k = a[C][_];
                        if (k) {
                            T = k[x];
                            var I = l[C].ordinalMeta;
                            I && I.categories.length && (T = I.categories[T]);
                        }
                    }
                    var D = null == m ? null : m.id;
                    null == D && null != T && (f[T] = f[T] || 0, D = T, f[T] > 0 && (D += "__ec__" + f[T]), 
                    f[T]++), null != D && (h[y] = D);
                }
            }
            !r.persistent && r.clean && r.clean(), this._rawCount = this._count = e, this._extent = {}, 
            Au(this);
        }
    }, e_.count = function() {
        return this._count;
    }, e_.getIndices = function() {
        var t, e = this._indices;
        if (e) {
            var n = e.constructor, i = this._count;
            if (n === Array) {
                t = new n(i);
                for (var r = 0; i > r; r++) t[r] = e[r];
            } else t = new n(e.buffer, 0, i);
        } else for (var n = Cu(this), t = new n(this.count()), r = 0; r < t.length; r++) t[r] = r;
        return t;
    }, e_.get = function(t, e) {
        if (!(e >= 0 && e < this._count)) return 0 / 0;
        var n = this._storage;
        if (!n[t]) return 0 / 0;
        e = this.getRawIndex(e);
        var i = Math.floor(e / this._chunkSize), r = e % this._chunkSize, a = n[t][i], o = a[r];
        return o;
    }, e_.getByRawIndex = function(t, e) {
        if (!(e >= 0 && e < this._rawCount)) return 0 / 0;
        var n = this._storage[t];
        if (!n) return 0 / 0;
        var i = Math.floor(e / this._chunkSize), r = e % this._chunkSize, a = n[i];
        return a[r];
    }, e_._getFast = function(t, e) {
        var n = Math.floor(e / this._chunkSize), i = e % this._chunkSize, r = this._storage[t][n];
        return r[i];
    }, e_.getValues = function(t, e) {
        var n = [];
        x(t) || (e = t, t = this.dimensions);
        for (var i = 0, r = t.length; r > i; i++) n.push(this.get(t[i], e));
        return n;
    }, e_.hasValue = function(t) {
        for (var e = this._dimensionsSummary.dataDimsOnCoord, n = 0, i = e.length; i > n; n++) if (isNaN(this.get(e[n], t))) return !1;
        return !0;
    }, e_.getDataExtent = function(t) {
        t = this.getDimension(t);
        var e = this._storage[t], n = Fu();
        if (!e) return n;
        var i, r = this.count(), a = !this._indices;
        if (a) return this._rawExtent[t].slice();
        if (i = this._extent[t]) return i.slice();
        i = n;
        for (var o = i[0], s = i[1], l = 0; r > l; l++) {
            var u = this._getFast(t, this.getRawIndex(l));
            o > u && (o = u), u > s && (s = u);
        }
        return i = [ o, s ], this._extent[t] = i, i;
    }, e_.getApproximateExtent = function(t) {
        return t = this.getDimension(t), this._approximateExtent[t] || this.getDataExtent(t);
    }, e_.setApproximateExtent = function(t, e) {
        e = this.getDimension(e), this._approximateExtent[e] = t.slice();
    }, e_.getCalculationInfo = function(t) {
        return this._calculationInfo[t];
    }, e_.setCalculationInfo = function(t, e) {
        Xy(t) ? o(this._calculationInfo, t) : this._calculationInfo[t] = e;
    }, e_.getSum = function(t) {
        var e = this._storage[t], n = 0;
        if (e) for (var i = 0, r = this.count(); r > i; i++) {
            var a = this.get(t, i);
            isNaN(a) || (n += a);
        }
        return n;
    }, e_.getMedian = function(t) {
        var e = [];
        this.each(t, function(t) {
            isNaN(t) || e.push(t);
        });
        var n = [].concat(e).sort(function(t, e) {
            return t - e;
        }), i = this.count();
        return 0 === i ? 0 : i % 2 === 1 ? n[(i - 1) / 2] : (n[i / 2] + n[i / 2 - 1]) / 2;
    }, e_.rawIndexOf = function(t, e) {
        var n = t && this._invertedIndicesMap[t], i = n[e];
        return null == i || isNaN(i) ? jy : i;
    }, e_.indexOfName = function(t) {
        for (var e = 0, n = this.count(); n > e; e++) if (this.getName(e) === t) return e;
        return -1;
    }, e_.indexOfRawIndex = function(t) {
        if (!this._indices) return t;
        if (t >= this._rawCount || 0 > t) return -1;
        var e = this._indices, n = e[t];
        if (null != n && n < this._count && n === t) return t;
        for (var i = 0, r = this._count - 1; r >= i; ) {
            var a = (i + r) / 2 | 0;
            if (e[a] < t) i = a + 1; else {
                if (!(e[a] > t)) return a;
                r = a - 1;
            }
        }
        return -1;
    }, e_.indicesOfNearest = function(t, e, n) {
        var i = this._storage, r = i[t], a = [];
        if (!r) return a;
        null == n && (n = 1 / 0);
        for (var o = Number.MAX_VALUE, s = -1, l = 0, u = this.count(); u > l; l++) {
            var h = e - this.get(t, l), c = Math.abs(h);
            n >= h && o >= c && ((o > c || h >= 0 && 0 > s) && (o = c, s = h, a.length = 0), 
            a.push(l));
        }
        return a;
    }, e_.getRawIndex = Ou, e_.getRawDataItem = function(t) {
        if (this._rawData.persistent) return this._rawData.getItem(this.getRawIndex(t));
        for (var e = [], n = 0; n < this.dimensions.length; n++) {
            var i = this.dimensions[n];
            e.push(this.get(i, t));
        }
        return e;
    }, e_.getName = function(t) {
        var e = this.getRawIndex(t);
        return this._nameList[e] || Pu(this, this._nameDimIdx, e) || "";
    }, e_.getId = function(t) {
        return Eu(this, this.getRawIndex(t));
    }, e_.each = function(t, e, n, i) {
        if (this._count) {
            "function" == typeof t && (i = n, n = e, e = t, t = []), n = n || i || this, t = p(Bu(t), this.getDimension, this);
            for (var r = t.length, a = 0; a < this.count(); a++) switch (r) {
              case 0:
                e.call(n, a);
                break;

              case 1:
                e.call(n, this.get(t[0], a), a);
                break;

              case 2:
                e.call(n, this.get(t[0], a), this.get(t[1], a), a);
                break;

              default:
                for (var o = 0, s = []; r > o; o++) s[o] = this.get(t[o], a);
                s[o] = a, e.apply(n, s);
            }
        }
    }, e_.filterSelf = function(t, e, n, i) {
        if (this._count) {
            "function" == typeof t && (i = n, n = e, e = t, t = []), n = n || i || this, t = p(Bu(t), this.getDimension, this);
            for (var r = this.count(), a = Cu(this), o = new a(r), s = [], l = t.length, u = 0, h = t[0], c = 0; r > c; c++) {
                var f, d = this.getRawIndex(c);
                if (0 === l) f = e.call(n, c); else if (1 === l) {
                    var g = this._getFast(h, d);
                    f = e.call(n, g, c);
                } else {
                    for (var v = 0; l > v; v++) s[v] = this._getFast(h, d);
                    s[v] = c, f = e.apply(n, s);
                }
                f && (o[u++] = d);
            }
            return r > u && (this._indices = o), this._count = u, this._extent = {}, this.getRawIndex = this._indices ? Lu : Ou, 
            this;
        }
    }, e_.selectRange = function(t) {
        if (this._count) {
            var e = [];
            for (var n in t) t.hasOwnProperty(n) && e.push(n);
            var i = e.length;
            if (i) {
                var r = this.count(), a = Cu(this), o = new a(r), s = 0, l = e[0], u = t[l][0], h = t[l][1], c = !1;
                if (!this._indices) {
                    var f = 0;
                    if (1 === i) {
                        for (var d = this._storage[e[0]], p = 0; p < this._chunkCount; p++) for (var g = d[p], v = Math.min(this._count - p * this._chunkSize, this._chunkSize), m = 0; v > m; m++) {
                            var y = g[m];
                            (y >= u && h >= y || isNaN(y)) && (o[s++] = f), f++;
                        }
                        c = !0;
                    } else if (2 === i) {
                        for (var d = this._storage[l], _ = this._storage[e[1]], x = t[e[1]][0], w = t[e[1]][1], p = 0; p < this._chunkCount; p++) for (var g = d[p], b = _[p], v = Math.min(this._count - p * this._chunkSize, this._chunkSize), m = 0; v > m; m++) {
                            var y = g[m], S = b[m];
                            (y >= u && h >= y || isNaN(y)) && (S >= x && w >= S || isNaN(S)) && (o[s++] = f), 
                            f++;
                        }
                        c = !0;
                    }
                }
                if (!c) if (1 === i) for (var m = 0; r > m; m++) {
                    var M = this.getRawIndex(m), y = this._getFast(l, M);
                    (y >= u && h >= y || isNaN(y)) && (o[s++] = M);
                } else for (var m = 0; r > m; m++) {
                    for (var T = !0, M = this.getRawIndex(m), p = 0; i > p; p++) {
                        var C = e[p], y = this._getFast(n, M);
                        (y < t[C][0] || y > t[C][1]) && (T = !1);
                    }
                    T && (o[s++] = this.getRawIndex(m));
                }
                return r > s && (this._indices = o), this._count = s, this._extent = {}, this.getRawIndex = this._indices ? Lu : Ou, 
                this;
            }
        }
    }, e_.mapArray = function(t, e, n, i) {
        "function" == typeof t && (i = n, n = e, e = t, t = []), n = n || i || this;
        var r = [];
        return this.each(t, function() {
            r.push(e && e.apply(this, arguments));
        }, n), r;
    }, e_.map = function(t, e, n, i) {
        n = n || i || this, t = p(Bu(t), this.getDimension, this);
        var r = zu(this, t);
        r._indices = this._indices, r.getRawIndex = r._indices ? Lu : Ou;
        for (var a = r._storage, o = [], s = this._chunkSize, l = t.length, u = this.count(), h = [], c = r._rawExtent, f = 0; u > f; f++) {
            for (var d = 0; l > d; d++) h[d] = this.get(t[d], f);
            h[l] = f;
            var g = e && e.apply(n, h);
            if (null != g) {
                "object" != typeof g && (o[0] = g, g = o);
                for (var v = this.getRawIndex(f), m = Math.floor(v / s), y = v % s, _ = 0; _ < g.length; _++) {
                    var x = t[_], w = g[_], b = c[x], S = a[x];
                    S && (S[m][y] = w), w < b[0] && (b[0] = w), w > b[1] && (b[1] = w);
                }
            }
        }
        return r;
    }, e_.downSample = function(t, e, n, i) {
        for (var r = zu(this, [ t ]), a = r._storage, o = [], s = Math.floor(1 / e), l = a[t], u = this.count(), h = this._chunkSize, c = r._rawExtent[t], f = new (Cu(this))(u), d = 0, p = 0; u > p; p += s) {
            s > u - p && (s = u - p, o.length = s);
            for (var g = 0; s > g; g++) {
                var v = this.getRawIndex(p + g), m = Math.floor(v / h), y = v % h;
                o[g] = l[m][y];
            }
            var _ = n(o), x = this.getRawIndex(Math.min(p + i(o, _) || 0, u - 1)), w = Math.floor(x / h), b = x % h;
            l[w][b] = _, _ < c[0] && (c[0] = _), _ > c[1] && (c[1] = _), f[d++] = x;
        }
        return r._count = d, r._indices = f, r.getRawIndex = Lu, r;
    }, e_.getItemModel = function(t) {
        var e = this.hostModel;
        return new Qa(this.getRawDataItem(t), e, e && e.ecModel);
    }, e_.diff = function(t) {
        var e = this;
        return new xu(t ? t.getIndices() : [], this.getIndices(), function(e) {
            return Eu(t, e);
        }, function(t) {
            return Eu(e, t);
        });
    }, e_.getVisual = function(t) {
        var e = this._visual;
        return e && e[t];
    }, e_.setVisual = function(t, e) {
        if (Xy(t)) for (var n in t) t.hasOwnProperty(n) && this.setVisual(n, t[n]); else this._visual = this._visual || {}, 
        this._visual[t] = e;
    }, e_.setLayout = function(t, e) {
        if (Xy(t)) for (var n in t) t.hasOwnProperty(n) && this.setLayout(n, t[n]); else this._layout[t] = e;
    }, e_.getLayout = function(t) {
        return this._layout[t];
    }, e_.getItemLayout = function(t) {
        return this._itemLayouts[t];
    }, e_.setItemLayout = function(t, e, n) {
        this._itemLayouts[t] = n ? o(this._itemLayouts[t] || {}, e) : e;
    }, e_.clearItemLayouts = function() {
        this._itemLayouts.length = 0;
    }, e_.getItemVisual = function(t, e, n) {
        var i = this._itemVisuals[t], r = i && i[e];
        return null != r || n ? r : this.getVisual(e);
    }, e_.setItemVisual = function(t, e, n) {
        var i = this._itemVisuals[t] || {}, r = this.hasItemVisual;
        if (this._itemVisuals[t] = i, Xy(e)) for (var a in e) e.hasOwnProperty(a) && (i[a] = e[a], 
        r[a] = !0); else i[e] = n, r[e] = !0;
    }, e_.clearAllVisual = function() {
        this._visual = {}, this._itemVisuals = [], this.hasItemVisual = {};
    };
    var n_ = function(t) {
        t.seriesIndex = this.seriesIndex, t.dataIndex = this.dataIndex, t.dataType = this.dataType;
    };
    e_.setItemGraphicEl = function(t, e) {
        var n = this.hostModel;
        e && (e.dataIndex = t, e.dataType = this.dataType, e.seriesIndex = n && n.seriesIndex, 
        "group" === e.type && e.traverse(n_, e)), this._graphicEls[t] = e;
    }, e_.getItemGraphicEl = function(t) {
        return this._graphicEls[t];
    }, e_.eachItemGraphicEl = function(t, e) {
        d(this._graphicEls, function(n, i) {
            n && t && t.call(e, n, i);
        });
    }, e_.cloneShallow = function(t) {
        if (!t) {
            var e = p(this.dimensions, this.getDimensionInfo, this);
            t = new t_(e, this.hostModel);
        }
        if (t._storage = this._storage, Iu(t, this), this._indices) {
            var n = this._indices.constructor;
            t._indices = new n(this._indices);
        } else t._indices = null;
        return t.getRawIndex = t._indices ? Lu : Ou, t;
    }, e_.wrapMethod = function(t, e) {
        var n = this[t];
        "function" == typeof n && (this.__wrappedMethods = this.__wrappedMethods || [], 
        this.__wrappedMethods.push(t), this[t] = function() {
            var t = n.apply(this, arguments);
            return e.apply(this, [ t ].concat(P(arguments)));
        });
    }, e_.TRANSFERABLE_METHODS = [ "cloneShallow", "downSample", "map" ], e_.CHANGABLE_METHODS = [ "filterSelf", "selectRange" ];
    var i_ = function(t, e) {
        return e = e || {}, Nu(e.coordDimensions || [], t, {
            dimsDef: e.dimensionsDefine || t.dimensionsDefine,
            encodeDef: e.encodeDefine || t.encodeDefine,
            dimCount: e.dimensionsCount,
            generateCoord: e.generateCoord,
            generateCoordCount: e.generateCoordCount
        });
    };
    Yu.prototype.parse = function(t) {
        return t;
    }, Yu.prototype.getSetting = function(t) {
        return this._setting[t];
    }, Yu.prototype.contain = function(t) {
        var e = this._extent;
        return t >= e[0] && t <= e[1];
    }, Yu.prototype.normalize = function(t) {
        var e = this._extent;
        return e[1] === e[0] ? .5 : (t - e[0]) / (e[1] - e[0]);
    }, Yu.prototype.scale = function(t) {
        var e = this._extent;
        return t * (e[1] - e[0]) + e[0];
    }, Yu.prototype.unionExtent = function(t) {
        var e = this._extent;
        t[0] < e[0] && (e[0] = t[0]), t[1] > e[1] && (e[1] = t[1]);
    }, Yu.prototype.unionExtentFromData = function(t, e) {
        this.unionExtent(t.getApproximateExtent(e));
    }, Yu.prototype.getExtent = function() {
        return this._extent.slice();
    }, Yu.prototype.setExtent = function(t, e) {
        var n = this._extent;
        isNaN(t) || (n[0] = t), isNaN(e) || (n[1] = e);
    }, Yu.prototype.isBlank = function() {
        return this._isBlank;
    }, Yu.prototype.setBlank = function(t) {
        this._isBlank = t;
    }, Yu.prototype.getLabel = null, nr(Yu), or(Yu, {
        registerWhenExtend: !0
    }), Zu.createByAxisModel = function(t) {
        var e = t.option, n = e.data, i = n && p(n, Ku);
        return new Zu({
            categories: i,
            needCollect: !i,
            deduplication: e.dedplication !== !1
        });
    };
    var r_ = Zu.prototype;
    r_.getOrdinal = function(t) {
        return $u(this).get(t);
    }, r_.parseAndCollect = function(t) {
        var e, n = this._needCollect;
        if ("string" != typeof t && !n) return t;
        if (n && !this._deduplication) return e = this.categories.length, this.categories[e] = t, 
        e;
        var i = $u(this);
        return e = i.get(t), null == e && (n ? (e = this.categories.length, this.categories[e] = t, 
        i.set(t, e)) : e = 0 / 0), e;
    };
    var a_ = Yu.prototype, o_ = Yu.extend({
        type: "ordinal",
        init: function(t, e) {
            (!t || x(t)) && (t = new Zu({
                categories: t
            })), this._ordinalMeta = t, this._extent = e || [ 0, t.categories.length - 1 ];
        },
        parse: function(t) {
            return "string" == typeof t ? this._ordinalMeta.getOrdinal(t) : Math.round(t);
        },
        contain: function(t) {
            return t = this.parse(t), a_.contain.call(this, t) && null != this._ordinalMeta.categories[t];
        },
        normalize: function(t) {
            return a_.normalize.call(this, this.parse(t));
        },
        scale: function(t) {
            return Math.round(a_.scale.call(this, t));
        },
        getTicks: function() {
            for (var t = [], e = this._extent, n = e[0]; n <= e[1]; ) t.push(n), n++;
            return t;
        },
        getLabel: function(t) {
            return this.isBlank() ? void 0 : this._ordinalMeta.categories[t];
        },
        count: function() {
            return this._extent[1] - this._extent[0] + 1;
        },
        unionExtentFromData: function(t, e) {
            this.unionExtent(t.getApproximateExtent(e));
        },
        getOrdinalMeta: function() {
            return this._ordinalMeta;
        },
        niceTicks: V,
        niceExtent: V
    });
    o_.create = function() {
        return new o_();
    };
    var s_ = so, l_ = so, u_ = Yu.extend({
        type: "interval",
        _interval: 0,
        _intervalPrecision: 2,
        setExtent: function(t, e) {
            var n = this._extent;
            isNaN(t) || (n[0] = parseFloat(t)), isNaN(e) || (n[1] = parseFloat(e));
        },
        unionExtent: function(t) {
            var e = this._extent;
            t[0] < e[0] && (e[0] = t[0]), t[1] > e[1] && (e[1] = t[1]), u_.prototype.setExtent.call(this, e[0], e[1]);
        },
        getInterval: function() {
            return this._interval;
        },
        setInterval: function(t) {
            this._interval = t, this._niceExtent = this._extent.slice(), this._intervalPrecision = Ju(t);
        },
        getTicks: function() {
            return nh(this._interval, this._extent, this._niceExtent, this._intervalPrecision);
        },
        getLabel: function(t, e) {
            if (null == t) return "";
            var n = e && e.precision;
            return null == n ? n = ho(t) || 0 : "auto" === n && (n = this._intervalPrecision), 
            t = l_(t, n, !0), So(t);
        },
        niceTicks: function(t, e, n) {
            t = t || 5;
            var i = this._extent, r = i[1] - i[0];
            if (isFinite(r)) {
                0 > r && (r = -r, i.reverse());
                var a = Qu(i, t, e, n);
                this._intervalPrecision = a.intervalPrecision, this._interval = a.interval, this._niceExtent = a.niceTickExtent;
            }
        },
        niceExtent: function(t) {
            var e = this._extent;
            if (e[0] === e[1]) if (0 !== e[0]) {
                var n = e[0];
                t.fixMax ? e[0] -= n / 2 : (e[1] += n / 2, e[0] -= n / 2);
            } else e[1] = 1;
            var i = e[1] - e[0];
            isFinite(i) || (e[0] = 0, e[1] = 1), this.niceTicks(t.splitNumber, t.minInterval, t.maxInterval);
            var r = this._interval;
            t.fixMin || (e[0] = l_(Math.floor(e[0] / r) * r)), t.fixMax || (e[1] = l_(Math.ceil(e[1] / r) * r));
        }
    });
    u_.create = function() {
        return new u_();
    };
    var h_ = "__ec_stack_", c_ = .5, f_ = "undefined" != typeof Float32Array ? Float32Array : Array, d_ = ({
        seriesType: "bar",
        plan: Sm(),
        reset: function(t) {
            function e(t, e) {
                for (var n, c = t.count, f = new f_(2 * c), d = new f_(c), p = [], g = [], v = 0, m = 0; null != (n = t.next()); ) g[u] = e.get(o, n), 
                g[1 - u] = e.get(s, n), p = i.dataToPoint(g, null, p), f[v++] = p[0], f[v++] = p[1], 
                d[m++] = n;
                e.setLayout({
                    largePoints: f,
                    largeDataIndices: d,
                    barWidth: h,
                    valueAxisStart: ch(r, a, !1),
                    valueAxisHorizontal: l
                });
            }
            if (uh(t) && hh(t)) {
                var n = t.getData(), i = t.coordinateSystem, r = i.getBaseAxis(), a = i.getOtherAxis(r), o = n.mapDimension(a.dim), s = n.mapDimension(r.dim), l = a.isHorizontal(), u = l ? 0 : 1, h = lh(oh([ t ]), r, t).width;
                return h > c_ || (h = c_), {
                    progress: e
                };
            }
        }
    }, u_.prototype), p_ = Math.ceil, g_ = Math.floor, v_ = 1e3, m_ = 60 * v_, y_ = 60 * m_, __ = 24 * y_, x_ = function(t, e, n, i) {
        for (;i > n; ) {
            var r = n + i >>> 1;
            t[r][1] < e ? n = r + 1 : i = r;
        }
        return n;
    }, w_ = u_.extend({
        type: "time",
        getLabel: function(t) {
            var e = this._stepLvl, n = new Date(t);
            return Ao(e[0], n, this.getSetting("useUTC"));
        },
        niceExtent: function(t) {
            var e = this._extent;
            if (e[0] === e[1] && (e[0] -= __, e[1] += __), e[1] === -1 / 0 && 1 / 0 === e[0]) {
                var n = new Date();
                e[1] = +new Date(n.getFullYear(), n.getMonth(), n.getDate()), e[0] = e[1] - __;
            }
            this.niceTicks(t.splitNumber, t.minInterval, t.maxInterval);
            var i = this._interval;
            t.fixMin || (e[0] = so(g_(e[0] / i) * i)), t.fixMax || (e[1] = so(p_(e[1] / i) * i));
        },
        niceTicks: function(t, e, n) {
            t = t || 10;
            var i = this._extent, r = i[1] - i[0], a = r / t;
            null != e && e > a && (a = e), null != n && a > n && (a = n);
            var o = b_.length, s = x_(b_, a, 0, o), l = b_[Math.min(s, o - 1)], u = l[1];
            if ("year" === l[0]) {
                var h = r / u, c = _o(h / t, !0);
                u *= c;
            }
            var f = this.getSetting("useUTC") ? 0 : 60 * new Date(+i[0] || +i[1]).getTimezoneOffset() * 1e3, d = [ Math.round(p_((i[0] - f) / u) * u + f), Math.round(g_((i[1] - f) / u) * u + f) ];
            eh(d, i), this._stepLvl = l, this._interval = u, this._niceExtent = d;
        },
        parse: function(t) {
            return +vo(t);
        }
    });
    d([ "contain", "normalize" ], function(t) {
        w_.prototype[t] = function(e) {
            return d_[t].call(this, this.parse(e));
        };
    });
    var b_ = [ [ "hh:mm:ss", v_ ], [ "hh:mm:ss", 5 * v_ ], [ "hh:mm:ss", 10 * v_ ], [ "hh:mm:ss", 15 * v_ ], [ "hh:mm:ss", 30 * v_ ], [ "hh:mm\nMM-dd", m_ ], [ "hh:mm\nMM-dd", 5 * m_ ], [ "hh:mm\nMM-dd", 10 * m_ ], [ "hh:mm\nMM-dd", 15 * m_ ], [ "hh:mm\nMM-dd", 30 * m_ ], [ "hh:mm\nMM-dd", y_ ], [ "hh:mm\nMM-dd", 2 * y_ ], [ "hh:mm\nMM-dd", 6 * y_ ], [ "hh:mm\nMM-dd", 12 * y_ ], [ "MM-dd\nyyyy", __ ], [ "MM-dd\nyyyy", 2 * __ ], [ "MM-dd\nyyyy", 3 * __ ], [ "MM-dd\nyyyy", 4 * __ ], [ "MM-dd\nyyyy", 5 * __ ], [ "MM-dd\nyyyy", 6 * __ ], [ "week", 7 * __ ], [ "MM-dd\nyyyy", 10 * __ ], [ "week", 14 * __ ], [ "week", 21 * __ ], [ "month", 31 * __ ], [ "week", 42 * __ ], [ "month", 62 * __ ], [ "week", 70 * __ ], [ "quarter", 95 * __ ], [ "month", 31 * __ * 4 ], [ "month", 31 * __ * 5 ], [ "half-year", 380 * __ / 2 ], [ "month", 31 * __ * 8 ], [ "month", 31 * __ * 10 ], [ "year", 380 * __ ] ];
    w_.create = function(t) {
        return new w_({
            useUTC: t.ecModel.get("useUTC")
        });
    };
    var S_ = Yu.prototype, M_ = u_.prototype, T_ = ho, C_ = so, k_ = Math.floor, I_ = Math.ceil, D_ = Math.pow, A_ = Math.log, P_ = Yu.extend({
        type: "log",
        base: 10,
        $constructor: function() {
            Yu.apply(this, arguments), this._originalScale = new u_();
        },
        getTicks: function() {
            var t = this._originalScale, e = this._extent, n = t.getExtent();
            return p(M_.getTicks.call(this), function(i) {
                var r = so(D_(this.base, i));
                return r = i === e[0] && t.__fixMin ? fh(r, n[0]) : r, r = i === e[1] && t.__fixMax ? fh(r, n[1]) : r;
            }, this);
        },
        getLabel: M_.getLabel,
        scale: function(t) {
            return t = S_.scale.call(this, t), D_(this.base, t);
        },
        setExtent: function(t, e) {
            var n = this.base;
            t = A_(t) / A_(n), e = A_(e) / A_(n), M_.setExtent.call(this, t, e);
        },
        getExtent: function() {
            var t = this.base, e = S_.getExtent.call(this);
            e[0] = D_(t, e[0]), e[1] = D_(t, e[1]);
            var n = this._originalScale, i = n.getExtent();
            return n.__fixMin && (e[0] = fh(e[0], i[0])), n.__fixMax && (e[1] = fh(e[1], i[1])), 
            e;
        },
        unionExtent: function(t) {
            this._originalScale.unionExtent(t);
            var e = this.base;
            t[0] = A_(t[0]) / A_(e), t[1] = A_(t[1]) / A_(e), S_.unionExtent.call(this, t);
        },
        unionExtentFromData: function(t, e) {
            this.unionExtent(t.getApproximateExtent(e));
        },
        niceTicks: function(t) {
            t = t || 10;
            var e = this._extent, n = e[1] - e[0];
            if (!(1 / 0 === n || 0 >= n)) {
                var i = mo(n), r = t / n * i;
                for (.5 >= r && (i *= 10); !isNaN(i) && Math.abs(i) < 1 && Math.abs(i) > 0; ) i *= 10;
                var a = [ so(I_(e[0] / i) * i), so(k_(e[1] / i) * i) ];
                this._interval = i, this._niceExtent = a;
            }
        },
        niceExtent: function(t) {
            M_.niceExtent.call(this, t);
            var e = this._originalScale;
            e.__fixMin = t.fixMin, e.__fixMax = t.fixMax;
        }
    });
    d([ "contain", "normalize" ], function(t) {
        P_.prototype[t] = function(e) {
            return e = A_(e) / A_(this.base), S_[t].call(this, e);
        };
    }), P_.create = function() {
        return new P_();
    };
    var O_ = {
        getMin: function(t) {
            var e = this.option, n = t || null == e.rangeStart ? e.min : e.rangeStart;
            return this.axis && null != n && "dataMin" !== n && "function" != typeof n && !k(n) && (n = this.axis.scale.parse(n)), 
            n;
        },
        getMax: function(t) {
            var e = this.option, n = t || null == e.rangeEnd ? e.max : e.rangeEnd;
            return this.axis && null != n && "dataMax" !== n && "function" != typeof n && !k(n) && (n = this.axis.scale.parse(n)), 
            n;
        },
        getNeedCrossZero: function() {
            var t = this.option;
            return null != t.rangeStart || null != t.rangeEnd ? !1 : !t.scale;
        },
        getCoordSysModel: V,
        setRange: function(t, e) {
            this.option.rangeStart = t, this.option.rangeEnd = e;
        },
        resetRange: function() {
            this.option.rangeStart = this.option.rangeEnd = null;
        }
    }, L_ = ta({
        type: "triangle",
        shape: {
            cx: 0,
            cy: 0,
            width: 0,
            height: 0
        },
        buildPath: function(t, e) {
            var n = e.cx, i = e.cy, r = e.width / 2, a = e.height / 2;
            t.moveTo(n, i - a), t.lineTo(n + r, i + a), t.lineTo(n - r, i + a), t.closePath();
        }
    }), E_ = ta({
        type: "diamond",
        shape: {
            cx: 0,
            cy: 0,
            width: 0,
            height: 0
        },
        buildPath: function(t, e) {
            var n = e.cx, i = e.cy, r = e.width / 2, a = e.height / 2;
            t.moveTo(n, i - a), t.lineTo(n + r, i), t.lineTo(n, i + a), t.lineTo(n - r, i), 
            t.closePath();
        }
    }), B_ = ta({
        type: "pin",
        shape: {
            x: 0,
            y: 0,
            width: 0,
            height: 0
        },
        buildPath: function(t, e) {
            var n = e.x, i = e.y, r = e.width / 5 * 3, a = Math.max(r, e.height), o = r / 2, s = o * o / (a - o), l = i - a + o + s, u = Math.asin(s / o), h = Math.cos(u) * o, c = Math.sin(u), f = Math.cos(u), d = .6 * o, p = .7 * o;
            t.moveTo(n - h, l + s), t.arc(n, l, o, Math.PI - u, 2 * Math.PI + u), t.bezierCurveTo(n + h - c * d, l + s + f * d, n, i - p, n, i), 
            t.bezierCurveTo(n, i - p, n - h + c * d, l + s + f * d, n - h, l + s), t.closePath();
        }
    }), z_ = ta({
        type: "arrow",
        shape: {
            x: 0,
            y: 0,
            width: 0,
            height: 0
        },
        buildPath: function(t, e) {
            var n = e.height, i = e.width, r = e.x, a = e.y, o = i / 3 * 2;
            t.moveTo(r, a), t.lineTo(r + o, a + n), t.lineTo(r, a + n / 4 * 3), t.lineTo(r - o, a + n), 
            t.lineTo(r, a), t.closePath();
        }
    }), R_ = {
        line: Vg,
        rect: Fg,
        roundRect: Fg,
        square: Fg,
        circle: kg,
        diamond: E_,
        pin: B_,
        arrow: z_,
        triangle: L_
    }, F_ = {
        line: function(t, e, n, i, r) {
            r.x1 = t, r.y1 = e + i / 2, r.x2 = t + n, r.y2 = e + i / 2;
        },
        rect: function(t, e, n, i, r) {
            r.x = t, r.y = e, r.width = n, r.height = i;
        },
        roundRect: function(t, e, n, i, r) {
            r.x = t, r.y = e, r.width = n, r.height = i, r.r = Math.min(n, i) / 4;
        },
        square: function(t, e, n, i, r) {
            var a = Math.min(n, i);
            r.x = t, r.y = e, r.width = a, r.height = a;
        },
        circle: function(t, e, n, i, r) {
            r.cx = t + n / 2, r.cy = e + i / 2, r.r = Math.min(n, i) / 2;
        },
        diamond: function(t, e, n, i, r) {
            r.cx = t + n / 2, r.cy = e + i / 2, r.width = n, r.height = i;
        },
        pin: function(t, e, n, i, r) {
            r.x = t + n / 2, r.y = e + i / 2, r.width = n, r.height = i;
        },
        arrow: function(t, e, n, i, r) {
            r.x = t + n / 2, r.y = e + i / 2, r.width = n, r.height = i;
        },
        triangle: function(t, e, n, i, r) {
            r.cx = t + n / 2, r.cy = e + i / 2, r.width = n, r.height = i;
        }
    }, N_ = {};
    d(R_, function(t, e) {
        N_[e] = new t();
    });
    var V_ = ta({
        type: "symbol",
        shape: {
            symbolType: "",
            x: 0,
            y: 0,
            width: 0,
            height: 0
        },
        calculateTextPosition: function(t, e, n) {
            var i = qn(t, e, n), r = this.shape;
            return r && "pin" === r.symbolType && "inside" === e.textPosition && (i.y = n.y + .4 * n.height), 
            i;
        },
        buildPath: function(t, e, n) {
            var i = e.symbolType;
            if ("none" !== i) {
                var r = N_[i];
                r || (i = "rect", r = N_[i]), F_[i](e.x, e.y, e.width, e.height, r.shape), r.buildPath(t, r.shape, n);
            }
        }
    }), H_ = {
        isDimensionStacked: Gu,
        enableDataStack: Wu,
        getStackedDimension: Xu
    }, W_ = (Object.freeze || Object)({
        createList: Ch,
        getLayoutRect: Bo,
        dataStack: H_,
        createScale: kh,
        mixinAxisModelCommonMethods: Ih,
        completeDimensions: Nu,
        createDimensions: i_,
        createSymbol: Th
    }), G_ = 1e-8;
    Ph.prototype = {
        constructor: Ph,
        properties: null,
        getBoundingRect: function() {
            var t = this._rect;
            if (t) return t;
            for (var e = Number.MAX_VALUE, n = [ e, e ], i = [ -e, -e ], r = [], a = [], o = this.geometries, s = 0; s < o.length; s++) if ("polygon" === o[s].type) {
                var l = o[s].exterior;
                wr(l, r, a), oe(n, n, r), se(i, i, a);
            }
            return 0 === s && (n[0] = n[1] = i[0] = i[1] = 0), this._rect = new wn(n[0], n[1], i[0] - n[0], i[1] - n[1]);
        },
        contain: function(t) {
            var e = this.getBoundingRect(), n = this.geometries;
            if (!e.contain(t[0], t[1])) return !1;
            t: for (var i = 0, r = n.length; r > i; i++) if ("polygon" === n[i].type) {
                var a = n[i].exterior, o = n[i].interiors;
                if (Ah(a, t[0], t[1])) {
                    for (var s = 0; s < (o ? o.length : 0); s++) if (Ah(o[s])) continue t;
                    return !0;
                }
            }
            return !1;
        },
        transformTo: function(t, e, n, i) {
            var r = this.getBoundingRect(), a = r.width / r.height;
            n ? i || (i = n / a) : n = a * i;
            for (var o = new wn(t, e, n, i), s = r.calculateTransform(o), l = this.geometries, u = 0; u < l.length; u++) if ("polygon" === l[u].type) {
                for (var h = l[u].exterior, c = l[u].interiors, f = 0; f < h.length; f++) ae(h[f], h[f], s);
                for (var d = 0; d < (c ? c.length : 0); d++) for (var f = 0; f < c[d].length; f++) ae(c[d][f], c[d][f], s);
            }
            r = this._rect, r.copy(o), this.center = [ r.x + r.width / 2, r.y + r.height / 2 ];
        },
        cloneShallow: function(t) {
            null == t && (t = this.name);
            var e = new Ph(t, this.geometries, this.center);
            return e._rect = this._rect, e.transformTo = null, e;
        }
    };
    var X_ = function(t) {
        return Oh(t), p(v(t.features, function(t) {
            return t.geometry && t.properties && t.geometry.coordinates.length > 0;
        }), function(t) {
            var e = t.properties, n = t.geometry, i = n.coordinates, r = [];
            "Polygon" === n.type && r.push({
                type: "polygon",
                exterior: i[0],
                interiors: i.slice(1)
            }), "MultiPolygon" === n.type && d(i, function(t) {
                t[0] && r.push({
                    type: "polygon",
                    exterior: t[0],
                    interiors: t.slice(1)
                });
            });
            var a = new Ph(e.name, r, e.cp);
            return a.properties = e, a;
        });
    }, q_ = Yi(), j_ = [ 0, 1 ], U_ = function(t, e, n) {
        this.dim = t, this.scale = e, this._extent = n || [ 0, 0 ], this.inverse = !1, this.onBand = !1;
    };
    U_.prototype = {
        constructor: U_,
        contain: function(t) {
            var e = this._extent, n = Math.min(e[0], e[1]), i = Math.max(e[0], e[1]);
            return t >= n && i >= t;
        },
        containData: function(t) {
            return this.contain(this.dataToCoord(t));
        },
        getExtent: function() {
            return this._extent.slice();
        },
        getPixelPrecision: function(t) {
            return co(t || this.scale.getExtent(), this._extent);
        },
        setExtent: function(t, e) {
            var n = this._extent;
            n[0] = t, n[1] = e;
        },
        dataToCoord: function(t, e) {
            var n = this._extent, i = this.scale;
            return t = i.normalize(t), this.onBand && "ordinal" === i.type && (n = n.slice(), 
            Yh(n, i.count())), ao(t, j_, n, e);
        },
        coordToData: function(t, e) {
            var n = this._extent, i = this.scale;
            this.onBand && "ordinal" === i.type && (n = n.slice(), Yh(n, i.count()));
            var r = ao(t, n, j_, e);
            return this.scale.scale(r);
        },
        pointToData: function() {},
        getTicksCoords: function(t) {
            t = t || {};
            var e = t.tickModel || this.getTickModel(), n = Bh(this, e), i = n.ticks, r = p(i, function(t) {
                return {
                    coord: this.dataToCoord(t),
                    tickValue: t
                };
            }, this), a = e.get("alignWithLabel");
            return Zh(this, r, n.tickCategoryInterval, a, t.clamp), r;
        },
        getViewLabels: function() {
            return Eh(this).labels;
        },
        getLabelModel: function() {
            return this.model.getModel("axisLabel");
        },
        getTickModel: function() {
            return this.model.getModel("axisTick");
        },
        getBandWidth: function() {
            var t = this._extent, e = this.scale.getExtent(), n = e[1] - e[0] + (this.onBand ? 1 : 0);
            0 === n && (n = 1);
            var i = Math.abs(t[1] - t[0]);
            return Math.abs(i) / n;
        },
        isHorizontal: null,
        getRotate: null,
        calculateCategoryInterval: function() {
            return Xh(this);
        }
    };
    var Y_ = X_, Z_ = {};
    d([ "map", "each", "filter", "indexOf", "inherits", "reduce", "filter", "bind", "curry", "isArray", "isString", "isObject", "isFunction", "extend", "defaults", "clone", "merge" ], function(t) {
        Z_[t] = df[t];
    });
    var $_ = {};
    d([ "extendShape", "extendPath", "makePath", "makeImage", "mergePath", "resizePath", "createIcon", "setHoverStyle", "setLabelStyle", "setTextStyle", "setText", "getFont", "updateProps", "initProps", "getTransform", "clipPointsByRect", "clipRectByRect", "registerShape", "getShapeClass", "Group", "Image", "Text", "Circle", "Sector", "Ring", "Polygon", "Polyline", "Rect", "Line", "BezierCurve", "Arc", "IncrementalDisplayable", "CompoundPath", "LinearGradient", "RadialGradient", "BoundingRect" ], function(t) {
        $_[t] = uv[t];
    }), xm.extend({
        type: "series.line",
        dependencies: [ "grid", "polar" ],
        getInitialData: function() {
            return qu(this.getSource(), this);
        },
        defaultOption: {
            zlevel: 0,
            z: 2,
            coordinateSystem: "cartesian2d",
            legendHoverLink: !0,
            hoverAnimation: !0,
            clip: !0,
            label: {
                position: "top"
            },
            lineStyle: {
                width: 2,
                type: "solid"
            },
            step: !1,
            smooth: !1,
            smoothMonotone: null,
            symbol: "emptyCircle",
            symbolSize: 4,
            symbolRotate: null,
            showSymbol: !0,
            showAllSymbol: "auto",
            connectNulls: !1,
            sampling: "none",
            animationEasing: "linear",
            progressive: 0,
            hoverLayerThreshold: 1 / 0
        }
    });
    var K_ = Kh.prototype, Q_ = Kh.getSymbolSize = function(t, e) {
        var n = t.getItemVisual(e, "symbolSize");
        return n instanceof Array ? n.slice() : [ +n, +n ];
    };
    K_._createSymbol = function(t, e, n, i, r) {
        this.removeAll();
        var a = e.getItemVisual(n, "color"), o = Th(t, -1, -1, 2, 2, a, r);
        o.attr({
            z2: 100,
            culling: !0,
            scale: Qh(i)
        }), o.drift = Jh, this._symbolType = t, this.add(o);
    }, K_.stopSymbolAnimation = function(t) {
        this.childAt(0).stopAnimation(t);
    }, K_.getSymbolPath = function() {
        return this.childAt(0);
    }, K_.getScale = function() {
        return this.childAt(0).scale;
    }, K_.highlight = function() {
        this.childAt(0).trigger("emphasis");
    }, K_.downplay = function() {
        this.childAt(0).trigger("normal");
    }, K_.setZ = function(t, e) {
        var n = this.childAt(0);
        n.zlevel = t, n.z = e;
    }, K_.setDraggable = function(t) {
        var e = this.childAt(0);
        e.draggable = t, e.cursor = t ? "move" : e.cursor;
    }, K_.updateData = function(t, e, n) {
        this.silent = !1;
        var i = t.getItemVisual(e, "symbol") || "circle", r = t.hostModel, a = Q_(t, e), o = i !== this._symbolType;
        if (o) {
            var s = t.getItemVisual(e, "symbolKeepAspect");
            this._createSymbol(i, t, e, a, s);
        } else {
            var l = this.childAt(0);
            l.silent = !1, Na(l, {
                scale: Qh(a)
            }, r, e);
        }
        if (this._updateCommon(t, e, a, n), o) {
            var l = this.childAt(0), u = n && n.fadeIn, h = {
                scale: l.scale.slice()
            };
            u && (h.style = {
                opacity: l.style.opacity
            }), l.scale = [ 0, 0 ], u && (l.style.opacity = 0), Va(l, h, r, e);
        }
        this._seriesModel = r;
    };
    var J_ = [ "itemStyle" ], tx = [ "emphasis", "itemStyle" ], ex = [ "label" ], nx = [ "emphasis", "label" ];
    K_._updateCommon = function(t, e, n, i) {
        function r(e) {
            return b ? t.getName(e) : $h(t, e);
        }
        var a = this.childAt(0), s = t.hostModel, l = t.getItemVisual(e, "color");
        "image" !== a.type && a.useStyle({
            strokeNoScale: !0
        });
        var u = i && i.itemStyle, h = i && i.hoverItemStyle, c = i && i.symbolRotate, f = i && i.symbolOffset, d = i && i.labelModel, p = i && i.hoverLabelModel, g = i && i.hoverAnimation, v = i && i.cursorStyle;
        if (!i || t.hasItemOption) {
            var m = i && i.itemModel ? i.itemModel : t.getItemModel(e);
            u = m.getModel(J_).getItemStyle([ "color" ]), h = m.getModel(tx).getItemStyle(), 
            c = m.getShallow("symbolRotate"), f = m.getShallow("symbolOffset"), d = m.getModel(ex), 
            p = m.getModel(nx), g = m.getShallow("hoverAnimation"), v = m.getShallow("cursor");
        } else h = o({}, h);
        var y = a.style;
        a.attr("rotation", (c || 0) * Math.PI / 180 || 0), f && a.attr("position", [ oo(f[0], n[0]), oo(f[1], n[1]) ]), 
        v && a.attr("cursor", v), a.setColor(l, i && i.symbolInnerColor), a.setStyle(u);
        var _ = t.getItemVisual(e, "opacity");
        null != _ && (y.opacity = _);
        var x = t.getItemVisual(e, "liftZ"), w = a.__z2Origin;
        null != x ? null == w && (a.__z2Origin = a.z2, a.z2 += x) : null != w && (a.z2 = w, 
        a.__z2Origin = null);
        var b = i && i.useNameLabel;
        ka(y, h, d, p, {
            labelFetcher: s,
            labelDataIndex: e,
            defaultText: r,
            isRectText: !0,
            autoColor: l
        }), a.__symbolOriginalScale = Qh(n), a.hoverStyle = h, a.highDownOnUpdate = g && s.isAnimationEnabled() ? tc : null, 
        Sa(a);
    }, K_.fadeOut = function(t, e) {
        var n = this.childAt(0);
        this.silent = n.silent = !0, !(e && e.keepLabel) && (n.style.text = null), Na(n, {
            style: {
                opacity: 0
            },
            scale: [ 0, 0 ]
        }, this._seriesModel, this.dataIndex, t);
    }, h(Kh, fd);
    var ix = ec.prototype;
    ix.updateData = function(t, e) {
        e = ic(e);
        var n = this.group, i = t.hostModel, r = this._data, a = this._symbolCtor, o = rc(t);
        r || n.removeAll(), t.diff(r).add(function(i) {
            var r = t.getItemLayout(i);
            if (nc(t, r, i, e)) {
                var s = new a(t, i, o);
                s.attr("position", r), t.setItemGraphicEl(i, s), n.add(s);
            }
        }).update(function(s, l) {
            var u = r.getItemGraphicEl(l), h = t.getItemLayout(s);
            return nc(t, h, s, e) ? (u ? (u.updateData(t, s, o), Na(u, {
                position: h
            }, i)) : (u = new a(t, s), u.attr("position", h)), n.add(u), void t.setItemGraphicEl(s, u)) : void n.remove(u);
        }).remove(function(t) {
            var e = r.getItemGraphicEl(t);
            e && e.fadeOut(function() {
                n.remove(e);
            });
        }).execute(), this._data = t;
    }, ix.isPersistent = function() {
        return !0;
    }, ix.updateLayout = function() {
        var t = this._data;
        t && t.eachItemGraphicEl(function(e, n) {
            var i = t.getItemLayout(n);
            e.attr("position", i);
        });
    }, ix.incrementalPrepareUpdate = function(t) {
        this._seriesScope = rc(t), this._data = null, this.group.removeAll();
    }, ix.incrementalUpdate = function(t, e, n) {
        function i(t) {
            t.isGroup || (t.incremental = t.useHoverLayer = !0);
        }
        n = ic(n);
        for (var r = t.start; r < t.end; r++) {
            var a = e.getItemLayout(r);
            if (nc(e, a, r, n)) {
                var o = new this._symbolCtor(e, r, this._seriesScope);
                o.traverse(i), o.attr("position", a), this.group.add(o), e.setItemGraphicEl(r, o);
            }
        }
    }, ix.remove = function(t) {
        var e = this.group, n = this._data;
        n && t ? n.eachItemGraphicEl(function(t) {
            t.fadeOut(function() {
                e.remove(t);
            });
        }) : e.removeAll();
    };
    var rx = function(t, e, n, i, r, a, o, s) {
        for (var l = lc(t, e), u = [], h = [], c = [], f = [], d = [], p = [], g = [], v = ac(r, e, o), m = ac(a, t, s), y = 0; y < l.length; y++) {
            var _ = l[y], x = !0;
            switch (_.cmd) {
              case "=":
                var w = t.getItemLayout(_.idx), b = e.getItemLayout(_.idx1);
                (isNaN(w[0]) || isNaN(w[1])) && (w = b.slice()), u.push(w), h.push(b), c.push(n[_.idx]), 
                f.push(i[_.idx1]), g.push(e.getRawIndex(_.idx1));
                break;

              case "+":
                var S = _.idx;
                u.push(r.dataToPoint([ e.get(v.dataDimsForPoint[0], S), e.get(v.dataDimsForPoint[1], S) ])), 
                h.push(e.getItemLayout(S).slice()), c.push(sc(v, r, e, S)), f.push(i[S]), g.push(e.getRawIndex(S));
                break;

              case "-":
                var S = _.idx, M = t.getRawIndex(S);
                M !== S ? (u.push(t.getItemLayout(S)), h.push(a.dataToPoint([ t.get(m.dataDimsForPoint[0], S), t.get(m.dataDimsForPoint[1], S) ])), 
                c.push(n[S]), f.push(sc(m, a, t, S)), g.push(M)) : x = !1;
            }
            x && (d.push(_), p.push(p.length));
        }
        p.sort(function(t, e) {
            return g[t] - g[e];
        });
        for (var T = [], C = [], k = [], I = [], D = [], y = 0; y < p.length; y++) {
            var S = p[y];
            T[y] = u[S], C[y] = h[S], k[y] = c[S], I[y] = f[S], D[y] = d[S];
        }
        return {
            current: T,
            next: C,
            stackedOnCurrent: k,
            stackedOnNext: I,
            status: D
        };
    }, ax = oe, ox = se, sx = j, lx = W, ux = [], hx = [], cx = [], fx = Vr.extend({
        type: "ec-polyline",
        shape: {
            points: [],
            smooth: 0,
            smoothConstraint: !0,
            smoothMonotone: null,
            connectNulls: !1
        },
        style: {
            fill: null,
            stroke: "#000"
        },
        brush: Dg(Vr.prototype.brush),
        buildPath: function(t, e) {
            var n = e.points, i = 0, r = n.length, a = dc(n, e.smoothConstraint);
            if (e.connectNulls) {
                for (;r > 0 && uc(n[r - 1]); r--) ;
                for (;r > i && uc(n[i]); i++) ;
            }
            for (;r > i; ) i += hc(t, n, i, r, r, 1, a.min, a.max, e.smooth, e.smoothMonotone, e.connectNulls) + 1;
        }
    }), dx = Vr.extend({
        type: "ec-polygon",
        shape: {
            points: [],
            stackedOnPoints: [],
            smooth: 0,
            stackedOnSmooth: 0,
            smoothConstraint: !0,
            smoothMonotone: null,
            connectNulls: !1
        },
        brush: Dg(Vr.prototype.brush),
        buildPath: function(t, e) {
            var n = e.points, i = e.stackedOnPoints, r = 0, a = n.length, o = e.smoothMonotone, s = dc(n, e.smoothConstraint), l = dc(i, e.smoothConstraint);
            if (e.connectNulls) {
                for (;a > 0 && uc(n[a - 1]); a--) ;
                for (;a > r && uc(n[r]); r++) ;
            }
            for (;a > r; ) {
                var u = hc(t, n, r, a, a, 1, s.min, s.max, e.smooth, o, e.connectNulls);
                hc(t, i, r + u - 1, u, a, -1, l.min, l.max, e.stackedOnSmooth, o, e.connectNulls), 
                r += u + 1, t.closePath();
            }
        }
    });
    Zs.extend({
        type: "line",
        init: function() {
            var t = new fd(), e = new ec();
            this.group.add(e.group), this._symbolDraw = e, this._lineGroup = t;
        },
        render: function(t, e, n) {
            var i = t.coordinateSystem, r = this.group, a = t.getData(), o = t.getModel("lineStyle"), l = t.getModel("areaStyle"), u = a.mapArray(a.getItemLayout), h = "polar" === i.type, c = this._coordSys, f = this._symbolDraw, d = this._polyline, p = this._polygon, g = this._lineGroup, v = t.get("animation"), m = !l.isEmpty(), y = l.get("origin"), _ = ac(i, a, y), x = yc(i, a, _), w = t.get("showSymbol"), b = w && !h && wc(t, a, i), S = this._data;
            S && S.eachItemGraphicEl(function(t, e) {
                t.__temp && (r.remove(t), S.setItemGraphicEl(e, null));
            }), w || f.remove(), r.add(g);
            var M, T = !h && t.get("step");
            i && i.getArea && (M = i.getArea(), null != M.width ? (M.x -= .1, M.y -= .1, M.width += .2, 
            M.height += .2) : M.r0 && (M.r0 -= .5, M.r1 += .5)), d && c.type === i.type && T === this._step ? (m && !p ? p = this._newPolygon(u, x, i, v) : p && !m && (g.remove(p), 
            p = this._polygon = null), g.setClipPath(Sc(i, !1, t)), w && f.updateData(a, {
                isIgnore: b,
                clipShape: M
            }), a.eachItemGraphicEl(function(t) {
                t.stopAnimation(!0);
            }), vc(this._stackedOnPoints, x) && vc(this._points, u) || (v ? this._updateAnimation(a, x, i, n, T, y) : (T && (u = _c(u, i, T), 
            x = _c(x, i, T)), d.setShape({
                points: u
            }), p && p.setShape({
                points: u,
                stackedOnPoints: x
            })))) : (w && f.updateData(a, {
                isIgnore: b,
                clipShape: M
            }), T && (u = _c(u, i, T), x = _c(x, i, T)), d = this._newPolyline(u, i, v), m && (p = this._newPolygon(u, x, i, v)), 
            g.setClipPath(Sc(i, !0, t)));
            var C = xc(a, i) || a.getVisual("color");
            d.useStyle(s(o.getLineStyle(), {
                fill: "none",
                stroke: C,
                lineJoin: "bevel"
            }));
            var k = t.get("smooth");
            if (k = mc(t.get("smooth")), d.setShape({
                smooth: k,
                smoothMonotone: t.get("smoothMonotone"),
                connectNulls: t.get("connectNulls")
            }), p) {
                var I = a.getCalculationInfo("stackedOnSeries"), D = 0;
                p.useStyle(s(l.getAreaStyle(), {
                    fill: C,
                    opacity: .7,
                    lineJoin: "bevel"
                })), I && (D = mc(I.get("smooth"))), p.setShape({
                    smooth: k,
                    stackedOnSmooth: D,
                    smoothMonotone: t.get("smoothMonotone"),
                    connectNulls: t.get("connectNulls")
                });
            }
            this._data = a, this._coordSys = i, this._stackedOnPoints = x, this._points = u, 
            this._step = T, this._valueOrigin = y;
        },
        dispose: function() {},
        highlight: function(t, e, n, i) {
            var r = t.getData(), a = Ui(r, i);
            if (!(a instanceof Array) && null != a && a >= 0) {
                var o = r.getItemGraphicEl(a);
                if (!o) {
                    var s = r.getItemLayout(a);
                    if (!s) return;
                    o = new Kh(r, a), o.position = s, o.setZ(t.get("zlevel"), t.get("z")), o.ignore = isNaN(s[0]) || isNaN(s[1]), 
                    o.__temp = !0, r.setItemGraphicEl(a, o), o.stopSymbolAnimation(!0), this.group.add(o);
                }
                o.highlight();
            } else Zs.prototype.highlight.call(this, t, e, n, i);
        },
        downplay: function(t, e, n, i) {
            var r = t.getData(), a = Ui(r, i);
            if (null != a && a >= 0) {
                var o = r.getItemGraphicEl(a);
                o && (o.__temp ? (r.setItemGraphicEl(a, null), this.group.remove(o)) : o.downplay());
            } else Zs.prototype.downplay.call(this, t, e, n, i);
        },
        _newPolyline: function(t) {
            var e = this._polyline;
            return e && this._lineGroup.remove(e), e = new fx({
                shape: {
                    points: t
                },
                silent: !0,
                z2: 10
            }), this._lineGroup.add(e), this._polyline = e, e;
        },
        _newPolygon: function(t, e) {
            var n = this._polygon;
            return n && this._lineGroup.remove(n), n = new dx({
                shape: {
                    points: t,
                    stackedOnPoints: e
                },
                silent: !0
            }), this._lineGroup.add(n), this._polygon = n, n;
        },
        _updateAnimation: function(t, e, n, i, r, a) {
            var o = this._polyline, s = this._polygon, l = t.hostModel, u = rx(this._data, t, this._stackedOnPoints, e, this._coordSys, n, this._valueOrigin, a), h = u.current, c = u.stackedOnCurrent, f = u.next, d = u.stackedOnNext;
            r && (h = _c(u.current, n, r), c = _c(u.stackedOnCurrent, n, r), f = _c(u.next, n, r), 
            d = _c(u.stackedOnNext, n, r)), o.shape.__points = u.current, o.shape.points = h, 
            Na(o, {
                shape: {
                    points: f
                }
            }, l), s && (s.setShape({
                points: h,
                stackedOnPoints: c
            }), Na(s, {
                shape: {
                    points: f,
                    stackedOnPoints: d
                }
            }, l));
            for (var p = [], g = u.status, v = 0; v < g.length; v++) {
                var m = g[v].cmd;
                if ("=" === m) {
                    var y = t.getItemGraphicEl(g[v].idx1);
                    y && p.push({
                        el: y,
                        ptIdx: v
                    });
                }
            }
            o.animators && o.animators.length && o.animators[0].during(function() {
                for (var t = 0; t < p.length; t++) {
                    var e = p[t].el;
                    e.attr("position", o.shape.__points[p[t].ptIdx]);
                }
            });
        },
        remove: function() {
            var t = this.group, e = this._data;
            this._lineGroup.removeAll(), this._symbolDraw.remove(!0), e && e.eachItemGraphicEl(function(n, i) {
                n.__temp && (t.remove(n), e.setItemGraphicEl(i, null));
            }), this._polyline = this._polygon = this._coordSys = this._points = this._stackedOnPoints = this._data = null;
        }
    });
    var px = function(t, e, n) {
        return {
            seriesType: t,
            performRawSeries: !0,
            reset: function(t, i) {
                function r(e, n) {
                    if (c) {
                        var i = t.getRawValue(n), r = t.getDataParams(n);
                        u && e.setItemVisual(n, "symbol", o(i, r)), h && e.setItemVisual(n, "symbolSize", s(i, r));
                    }
                    if (e.hasItemOption) {
                        var a = e.getItemModel(n), l = a.getShallow("symbol", !0), f = a.getShallow("symbolSize", !0), d = a.getShallow("symbolKeepAspect", !0);
                        null != l && e.setItemVisual(n, "symbol", l), null != f && e.setItemVisual(n, "symbolSize", f), 
                        null != d && e.setItemVisual(n, "symbolKeepAspect", d);
                    }
                }
                var a = t.getData(), o = t.get("symbol"), s = t.get("symbolSize"), l = t.get("symbolKeepAspect"), u = w(o), h = w(s), c = u || h, f = !u && o ? o : e, d = h ? null : s;
                return a.setVisual({
                    legendSymbol: n || f,
                    symbol: f,
                    symbolSize: d,
                    symbolKeepAspect: l
                }), i.isSeriesFiltered(t) ? void 0 : {
                    dataEach: a.hasItemOption || c ? r : null
                };
            }
        };
    }, gx = function(t) {
        return {
            seriesType: t,
            plan: Sm(),
            reset: function(t) {
                function e(t, e) {
                    for (var n = t.end - t.start, r = a && new Float32Array(n * s), l = t.start, u = 0, h = [], c = []; l < t.end; l++) {
                        var f;
                        if (1 === s) {
                            var d = e.get(o[0], l);
                            f = !isNaN(d) && i.dataToPoint(d, null, c);
                        } else {
                            var d = h[0] = e.get(o[0], l), p = h[1] = e.get(o[1], l);
                            f = !isNaN(d) && !isNaN(p) && i.dataToPoint(h, null, c);
                        }
                        a ? (r[u++] = f ? f[0] : 0 / 0, r[u++] = f ? f[1] : 0 / 0) : e.setItemLayout(l, f && f.slice() || [ 0 / 0, 0 / 0 ]);
                    }
                    a && e.setLayout("symbolPoints", r);
                }
                var n = t.getData(), i = t.coordinateSystem, r = t.pipelineContext, a = r.large;
                if (i) {
                    var o = p(i.dimensions, function(t) {
                        return n.mapDimension(t);
                    }).slice(0, 2), s = o.length, l = n.getCalculationInfo("stackResultDimension");
                    return Gu(n, o[0]) && (o[0] = l), Gu(n, o[1]) && (o[1] = l), s && {
                        progress: e
                    };
                }
            }
        };
    }, vx = {
        average: function(t) {
            for (var e = 0, n = 0, i = 0; i < t.length; i++) isNaN(t[i]) || (e += t[i], n++);
            return 0 === n ? 0 / 0 : e / n;
        },
        sum: function(t) {
            for (var e = 0, n = 0; n < t.length; n++) e += t[n] || 0;
            return e;
        },
        max: function(t) {
            for (var e = -1 / 0, n = 0; n < t.length; n++) t[n] > e && (e = t[n]);
            return isFinite(e) ? e : 0 / 0;
        },
        min: function(t) {
            for (var e = 1 / 0, n = 0; n < t.length; n++) t[n] < e && (e = t[n]);
            return isFinite(e) ? e : 0 / 0;
        },
        nearest: function(t) {
            return t[0];
        }
    }, mx = function(t) {
        return Math.round(t.length / 2);
    }, yx = function(t) {
        return {
            seriesType: t,
            modifyOutputEnd: !0,
            reset: function(t) {
                var e = t.getData(), n = t.get("sampling"), i = t.coordinateSystem;
                if ("cartesian2d" === i.type && n) {
                    var r = i.getBaseAxis(), a = i.getOtherAxis(r), o = r.getExtent(), s = o[1] - o[0], l = Math.round(e.count() / s);
                    if (l > 1) {
                        var u;
                        "string" == typeof n ? u = vx[n] : "function" == typeof n && (u = n), u && t.setData(e.downSample(e.mapDimension(a.dim), 1 / l, u, mx));
                    }
                }
            }
        };
    }, _x = function(t) {
        this._axes = {}, this._dimList = [], this.name = t || "";
    };
    _x.prototype = {
        constructor: _x,
        type: "cartesian",
        getAxis: function(t) {
            return this._axes[t];
        },
        getAxes: function() {
            return p(this._dimList, Mc, this);
        },
        getAxesByScale: function(t) {
            return t = t.toLowerCase(), v(this.getAxes(), function(e) {
                return e.scale.type === t;
            });
        },
        addAxis: function(t) {
            var e = t.dim;
            this._axes[e] = t, this._dimList.push(e);
        },
        dataToCoord: function(t) {
            return this._dataCoordConvert(t, "dataToCoord");
        },
        coordToData: function(t) {
            return this._dataCoordConvert(t, "coordToData");
        },
        _dataCoordConvert: function(t, e) {
            for (var n = this._dimList, i = t instanceof Array ? [] : {}, r = 0; r < n.length; r++) {
                var a = n[r], o = this._axes[a];
                i[a] = o[e](t[a]);
            }
            return i;
        }
    }, Tc.prototype = {
        constructor: Tc,
        type: "cartesian2d",
        dimensions: [ "x", "y" ],
        getBaseAxis: function() {
            return this.getAxesByScale("ordinal")[0] || this.getAxesByScale("time")[0] || this.getAxis("x");
        },
        containPoint: function(t) {
            var e = this.getAxis("x"), n = this.getAxis("y");
            return e.contain(e.toLocalCoord(t[0])) && n.contain(n.toLocalCoord(t[1]));
        },
        containData: function(t) {
            return this.getAxis("x").containData(t[0]) && this.getAxis("y").containData(t[1]);
        },
        dataToPoint: function(t, e, n) {
            var i = this.getAxis("x"), r = this.getAxis("y");
            return n = n || [], n[0] = i.toGlobalCoord(i.dataToCoord(t[0])), n[1] = r.toGlobalCoord(r.dataToCoord(t[1])), 
            n;
        },
        clampData: function(t, e) {
            var n = this.getAxis("x").scale, i = this.getAxis("y").scale, r = n.getExtent(), a = i.getExtent(), o = n.parse(t[0]), s = i.parse(t[1]);
            return e = e || [], e[0] = Math.min(Math.max(Math.min(r[0], r[1]), o), Math.max(r[0], r[1])), 
            e[1] = Math.min(Math.max(Math.min(a[0], a[1]), s), Math.max(a[0], a[1])), e;
        },
        pointToData: function(t, e) {
            var n = this.getAxis("x"), i = this.getAxis("y");
            return e = e || [], e[0] = n.coordToData(n.toLocalCoord(t[0])), e[1] = i.coordToData(i.toLocalCoord(t[1])), 
            e;
        },
        getOtherAxis: function(t) {
            return this.getAxis("x" === t.dim ? "y" : "x");
        },
        getArea: function() {
            var t = this.getAxis("x").getGlobalExtent(), e = this.getAxis("y").getGlobalExtent(), n = Math.min(t[0], t[1]), i = Math.min(e[0], e[1]), r = Math.max(t[0], t[1]) - n, a = Math.max(e[0], e[1]) - i, o = new wn(n, i, r, a);
            return o;
        }
    }, h(Tc, _x);
    var xx = function(t, e, n, i, r) {
        U_.call(this, t, e, n), this.type = i || "value", this.position = r || "bottom";
    };
    xx.prototype = {
        constructor: xx,
        index: 0,
        getAxesOnZeroOf: null,
        model: null,
        isHorizontal: function() {
            var t = this.position;
            return "top" === t || "bottom" === t;
        },
        getGlobalExtent: function(t) {
            var e = this.getExtent();
            return e[0] = this.toGlobalCoord(e[0]), e[1] = this.toGlobalCoord(e[1]), t && e[0] > e[1] && e.reverse(), 
            e;
        },
        getOtherAxis: function() {
            this.grid.getOtherAxis();
        },
        pointToData: function(t, e) {
            return this.coordToData(this.toLocalCoord(t["x" === this.dim ? 0 : 1]), e);
        },
        toLocalCoord: null,
        toGlobalCoord: null
    }, h(xx, U_);
    var bx = {
        show: !0,
        zlevel: 0,
        z: 0,
        inverse: !1,
        name: "",
        nameLocation: "end",
        nameRotate: null,
        nameTruncate: {
            maxWidth: null,
            ellipsis: "...",
            placeholder: "."
        },
        nameTextStyle: {},
        nameGap: 15,
        silent: !1,
        triggerEvent: !1,
        tooltip: {
            show: !1
        },
        axisPointer: {},
        axisLine: {
            show: !0,
            onZero: !0,
            onZeroAxisIndex: null,
            lineStyle: {
                color: "#333",
                width: 1,
                type: "solid"
            },
            symbol: [ "none", "none" ],
            symbolSize: [ 10, 15 ]
        },
        axisTick: {
            show: !0,
            inside: !1,
            length: 5,
            lineStyle: {
                width: 1
            }
        },
        axisLabel: {
            show: !0,
            inside: !1,
            rotate: 0,
            showMinLabel: null,
            showMaxLabel: null,
            margin: 8,
            fontSize: 12
        },
        splitLine: {
            show: !0,
            lineStyle: {
                color: [ "#ccc" ],
                width: 1,
                type: "solid"
            }
        },
        splitArea: {
            show: !1,
            areaStyle: {
                color: [ "rgba(250,250,250,0.3)", "rgba(200,200,200,0.3)" ]
            }
        }
    }, Sx = {};
    Sx.categoryAxis = r({
        boundaryGap: !0,
        deduplication: null,
        splitLine: {
            show: !1
        },
        axisTick: {
            alignWithLabel: !1,
            interval: "auto"
        },
        axisLabel: {
            interval: "auto"
        }
    }, bx), Sx.valueAxis = r({
        boundaryGap: [ 0, 0 ],
        splitNumber: 5
    }, bx), Sx.timeAxis = s({
        scale: !0,
        min: "dataMin",
        max: "dataMax"
    }, Sx.valueAxis), Sx.logAxis = s({
        scale: !0,
        logBase: 10
    }, Sx.valueAxis);
    var Mx = [ "value", "category", "time", "log" ], Tx = function(t, e, n, i) {
        d(Mx, function(o) {
            e.extend({
                type: t + "Axis." + o,
                mergeDefaultAndTheme: function(e, i) {
                    var a = this.layoutMode, s = a ? Ro(e) : {}, l = i.getTheme();
                    r(e, l.get(o + "Axis")), r(e, this.getDefaultOption()), e.type = n(t, e), a && zo(e, s, a);
                },
                optionUpdated: function() {
                    var t = this.option;
                    "category" === t.type && (this.__ordinalMeta = Zu.createByAxisModel(this));
                },
                getCategories: function(t) {
                    var e = this.option;
                    return "category" === e.type ? t ? e.data : this.__ordinalMeta.categories : void 0;
                },
                getOrdinalMeta: function() {
                    return this.__ordinalMeta;
                },
                defaultOption: a([ {}, Sx[o + "Axis"], i ], !0)
            });
        }), Lv.registerSubTypeDefaulter(t + "Axis", _(n, t));
    }, Cx = Lv.extend({
        type: "cartesian2dAxis",
        axis: null,
        init: function() {
            Cx.superApply(this, "init", arguments), this.resetRange();
        },
        mergeOption: function() {
            Cx.superApply(this, "mergeOption", arguments), this.resetRange();
        },
        restoreData: function() {
            Cx.superApply(this, "restoreData", arguments), this.resetRange();
        },
        getCoordSysModel: function() {
            return this.ecModel.queryComponents({
                mainType: "grid",
                index: this.option.gridIndex,
                id: this.option.gridId
            })[0];
        }
    });
    r(Cx.prototype, O_);
    var kx = {
        offset: 0
    };
    Tx("x", Cx, Cc, kx), Tx("y", Cx, Cc, kx), Lv.extend({
        type: "grid",
        dependencies: [ "xAxis", "yAxis" ],
        layoutMode: "box",
        coordinateSystem: null,
        defaultOption: {
            show: !1,
            zlevel: 0,
            z: 0,
            left: "10%",
            top: 60,
            right: "10%",
            bottom: 60,
            containLabel: !1,
            backgroundColor: "rgba(0,0,0,0)",
            borderWidth: 1,
            borderColor: "#ccc"
        }
    });
    var Ix = Ic.prototype;
    Ix.type = "grid", Ix.axisPointerEnabled = !0, Ix.getRect = function() {
        return this._rect;
    }, Ix.update = function(t, e) {
        var n = this._axesMap;
        this._updateScale(t, this.model), d(n.x, function(t) {
            gh(t.scale, t.model);
        }), d(n.y, function(t) {
            gh(t.scale, t.model);
        });
        var i = {};
        d(n.x, function(t) {
            Dc(n, "y", t, i);
        }), d(n.y, function(t) {
            Dc(n, "x", t, i);
        }), this.resize(this.model, e);
    }, Ix.resize = function(t, e, n) {
        function i() {
            d(a, function(t) {
                var e = t.isHorizontal(), n = e ? [ 0, r.width ] : [ 0, r.height ], i = t.inverse ? 1 : 0;
                t.setExtent(n[i], n[1 - i]), Pc(t, e ? r.x : r.y);
            });
        }
        var r = Bo(t.getBoxLayoutParams(), {
            width: e.getWidth(),
            height: e.getHeight()
        });
        this._rect = r;
        var a = this._axesList;
        i(), !n && t.get("containLabel") && (d(a, function(t) {
            if (!t.model.get("axisLabel.inside")) {
                var e = xh(t);
                if (e) {
                    var n = t.isHorizontal() ? "height" : "width", i = t.model.get("axisLabel.margin");
                    r[n] -= e[n] + i, "top" === t.position ? r.y += e.height + i : "left" === t.position && (r.x += e.width + i);
                }
            }
        }), i());
    }, Ix.getAxis = function(t, e) {
        var n = this._axesMap[t];
        if (null != n) {
            if (null == e) for (var i in n) if (n.hasOwnProperty(i)) return n[i];
            return n[e];
        }
    }, Ix.getAxes = function() {
        return this._axesList.slice();
    }, Ix.getCartesian = function(t, e) {
        if (null != t && null != e) {
            var n = "x" + t + "y" + e;
            return this._coordsMap[n];
        }
        S(t) && (e = t.yAxisIndex, t = t.xAxisIndex);
        for (var i = 0, r = this._coordsList; i < r.length; i++) if (r[i].getAxis("x").index === t || r[i].getAxis("y").index === e) return r[i];
    }, Ix.getCartesians = function() {
        return this._coordsList.slice();
    }, Ix.convertToPixel = function(t, e, n) {
        var i = this._findConvertTarget(t, e);
        return i.cartesian ? i.cartesian.dataToPoint(n) : i.axis ? i.axis.toGlobalCoord(i.axis.dataToCoord(n)) : null;
    }, Ix.convertFromPixel = function(t, e, n) {
        var i = this._findConvertTarget(t, e);
        return i.cartesian ? i.cartesian.pointToData(n) : i.axis ? i.axis.coordToData(i.axis.toLocalCoord(n)) : null;
    }, Ix._findConvertTarget = function(t, e) {
        var n, i, r = e.seriesModel, a = e.xAxisModel || r && r.getReferringComponents("xAxis")[0], o = e.yAxisModel || r && r.getReferringComponents("yAxis")[0], s = e.gridModel, l = this._coordsList;
        if (r) n = r.coordinateSystem, u(l, n) < 0 && (n = null); else if (a && o) n = this.getCartesian(a.componentIndex, o.componentIndex); else if (a) i = this.getAxis("x", a.componentIndex); else if (o) i = this.getAxis("y", o.componentIndex); else if (s) {
            var h = s.coordinateSystem;
            h === this && (n = this._coordsList[0]);
        }
        return {
            cartesian: n,
            axis: i
        };
    }, Ix.containPoint = function(t) {
        var e = this._coordsList[0];
        return e ? e.containPoint(t) : void 0;
    }, Ix._initCartesian = function(t, e) {
        function n(n) {
            return function(o, s) {
                if (kc(o, t, e)) {
                    var l = o.get("position");
                    "x" === n ? "top" !== l && "bottom" !== l && (l = i.bottom ? "top" : "bottom") : "left" !== l && "right" !== l && (l = i.left ? "right" : "left"), 
                    i[l] = !0;
                    var u = new xx(n, vh(o), [ 0, 0 ], o.get("type"), l), h = "category" === u.type;
                    u.onBand = h && o.get("boundaryGap"), u.inverse = o.get("inverse"), o.axis = u, 
                    u.model = o, u.grid = this, u.index = s, this._axesList.push(u), r[n][s] = u, a[n]++;
                }
            };
        }
        var i = {
            left: !1,
            right: !1,
            top: !1,
            bottom: !1
        }, r = {
            x: {},
            y: {}
        }, a = {
            x: 0,
            y: 0
        };
        return e.eachComponent("xAxis", n("x"), this), e.eachComponent("yAxis", n("y"), this), 
        a.x && a.y ? (this._axesMap = r, void d(r.x, function(e, n) {
            d(r.y, function(i, r) {
                var a = "x" + n + "y" + r, o = new Tc(a);
                o.grid = this, o.model = t, this._coordsMap[a] = o, this._coordsList.push(o), o.addAxis(e), 
                o.addAxis(i);
            }, this);
        }, this)) : (this._axesMap = {}, void (this._axesList = []));
    }, Ix._updateScale = function(t, e) {
        function n(t, e) {
            d(t.mapDimension(e.dim, !0), function(n) {
                e.scale.unionExtentFromData(t, Xu(t, n));
            });
        }
        d(this._axesList, function(t) {
            t.scale.setExtent(1 / 0, -1 / 0);
        }), t.eachSeries(function(i) {
            if (Lc(i)) {
                var r = Oc(i, t), a = r[0], o = r[1];
                if (!kc(a, e, t) || !kc(o, e, t)) return;
                var s = this.getCartesian(a.componentIndex, o.componentIndex), l = i.getData(), u = s.getAxis("x"), h = s.getAxis("y");
                "list" === l.type && (n(l, u, i), n(l, h, i));
            }
        }, this);
    }, Ix.getTooltipAxes = function(t) {
        var e = [], n = [];
        return d(this.getCartesians(), function(i) {
            var r = null != t && "auto" !== t ? i.getAxis(t) : i.getBaseAxis(), a = i.getOtherAxis(r);
            u(e, r) < 0 && e.push(r), u(n, a) < 0 && n.push(a);
        }), {
            baseAxes: e,
            otherAxes: n
        };
    };
    var Dx = [ "xAxis", "yAxis" ];
    Ic.create = function(t, e) {
        var n = [];
        return t.eachComponent("grid", function(i, r) {
            var a = new Ic(i, t, e);
            a.name = "grid_" + r, a.resize(i, e, !0), i.coordinateSystem = a, n.push(a);
        }), t.eachSeries(function(e) {
            if (Lc(e)) {
                var n = Oc(e, t), i = n[0], r = n[1], a = i.getCoordSysModel(), o = a.coordinateSystem;
                e.coordinateSystem = o.getCartesian(i.componentIndex, r.componentIndex);
            }
        }), n;
    }, Ic.dimensions = Ic.prototype.dimensions = Tc.prototype.dimensions, hs.register("cartesian2d", Ic);
    var Ax = Math.PI, Px = function(t, e) {
        this.opt = e, this.axisModel = t, s(e, {
            labelOffset: 0,
            nameDirection: 1,
            tickDirection: 1,
            labelDirection: 1,
            silent: !0
        }), this.group = new fd();
        var n = new fd({
            position: e.position.slice(),
            rotation: e.rotation
        });
        n.updateTransform(), this._transform = n.transform, this._dumbGroup = n;
    };
    Px.prototype = {
        constructor: Px,
        hasBuilder: function(t) {
            return !!Ox[t];
        },
        add: function(t) {
            Ox[t].call(this);
        },
        getGroup: function() {
            return this.group;
        }
    };
    var Ox = {
        axisLine: function() {
            var t = this.opt, e = this.axisModel;
            if (e.get("axisLine.show")) {
                var n = this.axisModel.axis.getExtent(), i = this._transform, r = [ n[0], 0 ], a = [ n[1], 0 ];
                i && (ae(r, r, i), ae(a, a, i));
                var s = o({
                    lineCap: "round"
                }, e.getModel("axisLine.lineStyle").getLineStyle());
                this.group.add(new Vg({
                    anid: "line",
                    subPixelOptimize: !0,
                    shape: {
                        x1: r[0],
                        y1: r[1],
                        x2: a[0],
                        y2: a[1]
                    },
                    style: s,
                    strokeContainThreshold: t.strokeContainThreshold || 5,
                    silent: !0,
                    z2: 1
                }));
                var l = e.get("axisLine.symbol"), u = e.get("axisLine.symbolSize"), h = e.get("axisLine.symbolOffset") || 0;
                if ("number" == typeof h && (h = [ h, h ]), null != l) {
                    "string" == typeof l && (l = [ l, l ]), ("string" == typeof u || "number" == typeof u) && (u = [ u, u ]);
                    var c = u[0], f = u[1];
                    d([ {
                        rotate: t.rotation + Math.PI / 2,
                        offset: h[0],
                        r: 0
                    }, {
                        rotate: t.rotation - Math.PI / 2,
                        offset: h[1],
                        r: Math.sqrt((r[0] - a[0]) * (r[0] - a[0]) + (r[1] - a[1]) * (r[1] - a[1]))
                    } ], function(e, n) {
                        if ("none" !== l[n] && null != l[n]) {
                            var i = Th(l[n], -c / 2, -f / 2, c, f, s.stroke, !0), a = e.r + e.offset, o = [ r[0] + a * Math.cos(t.rotation), r[1] - a * Math.sin(t.rotation) ];
                            i.attr({
                                rotation: e.rotate,
                                position: o,
                                silent: !0,
                                z2: 11
                            }), this.group.add(i);
                        }
                    }, this);
                }
            }
        },
        axisTickLabel: function() {
            var t = this.axisModel, e = this.opt, n = Nc(this, t, e), i = Vc(this, t, e);
            Bc(t, i, n);
        },
        axisName: function() {
            var t = this.opt, e = this.axisModel, n = I(t.axisName, e.get("name"));
            if (n) {
                var i, r = e.get("nameLocation"), a = t.nameDirection, s = e.getModel("nameTextStyle"), l = e.get("nameGap") || 0, u = this.axisModel.axis.getExtent(), h = u[0] > u[1] ? -1 : 1, c = [ "start" === r ? u[0] - h * l : "end" === r ? u[1] + h * l : (u[0] + u[1]) / 2, Fc(r) ? t.labelOffset + a * l : 0 ], f = e.get("nameRotate");
                null != f && (f = f * Ax / 180);
                var d;
                Fc(r) ? i = Ex(t.rotation, null != f ? f : t.rotation, a) : (i = Ec(t, r, f || 0, u), 
                d = t.axisNameAvailableWidth, null != d && (d = Math.abs(d / Math.sin(i.rotation)), 
                !isFinite(d) && (d = null)));
                var p = s.getFont(), g = e.get("nameTruncate", !0) || {}, v = g.ellipsis, m = I(t.nameTruncateMaxWidth, g.maxWidth, d), y = null != v && null != m ? Cv(n, m, p, v, {
                    minChar: 2,
                    placeholder: g.placeholder
                }) : n, _ = e.get("tooltip", !0), x = e.mainType, w = {
                    componentType: x,
                    name: n,
                    $vars: [ "name" ]
                };
                w[x + "Index"] = e.componentIndex;
                var b = new Cg({
                    anid: "name",
                    __fullText: n,
                    __truncatedText: y,
                    position: c,
                    rotation: i.rotation,
                    silent: Bx(e),
                    z2: 1,
                    tooltip: _ && _.show ? o({
                        content: n,
                        formatter: function() {
                            return n;
                        },
                        formatterParams: w
                    }, _) : null
                });
                Da(b.style, s, {
                    text: y,
                    textFont: p,
                    textFill: s.getTextColor() || e.get("axisLine.lineStyle.color"),
                    textAlign: s.get("align") || i.textAlign,
                    textVerticalAlign: s.get("verticalAlign") || i.textVerticalAlign
                }), e.get("triggerEvent") && (b.eventData = Lx(e), b.eventData.targetType = "axisName", 
                b.eventData.name = n), this._dumbGroup.add(b), b.updateTransform(), this.group.add(b), 
                b.decomposeTransform();
            }
        }
    }, Lx = Px.makeAxisEventDataBase = function(t) {
        var e = {
            componentType: t.mainType,
            componentIndex: t.componentIndex
        };
        return e[t.mainType + "Index"] = t.componentIndex, e;
    }, Ex = Px.innerTextLayout = function(t, e, n) {
        var i, r, a = po(e - t);
        return go(a) ? (r = n > 0 ? "top" : "bottom", i = "center") : go(a - Ax) ? (r = n > 0 ? "bottom" : "top", 
        i = "center") : (r = "middle", i = a > 0 && Ax > a ? n > 0 ? "right" : "left" : n > 0 ? "left" : "right"), 
        {
            rotation: a,
            textAlign: i,
            textVerticalAlign: r
        };
    }, Bx = Px.isLabelSilent = function(t) {
        var e = t.get("tooltip");
        return t.get("silent") || !(t.get("triggerEvent") || e && e.show);
    }, zx = du({
        type: "axis",
        _axisPointer: null,
        axisPointerClass: null,
        render: function(t, e, n, i) {
            this.axisPointerClass && Hc(t), zx.superApply(this, "render", arguments), jc(this, t, e, n, i, !0);
        },
        updateAxisPointer: function(t, e, n, i) {
            jc(this, t, e, n, i, !1);
        },
        remove: function(t, e) {
            var n = this._axisPointer;
            n && n.remove(e), zx.superApply(this, "remove", arguments);
        },
        dispose: function(t, e) {
            Uc(this, e), zx.superApply(this, "dispose", arguments);
        }
    }), Rx = [];
    zx.registerAxisPointerClass = function(t, e) {
        Rx[t] = e;
    }, zx.getAxisPointerClass = function(t) {
        return t && Rx[t];
    };
    var Fx = [ "axisLine", "axisTickLabel", "axisName" ], Nx = [ "splitArea", "splitLine" ], Vx = zx.extend({
        type: "cartesianAxis",
        axisPointerClass: "CartesianAxisPointer",
        render: function(t, e, n, i) {
            this.group.removeAll();
            var r = this._axisGroup;
            if (this._axisGroup = new fd(), this.group.add(this._axisGroup), t.get("show")) {
                var a = t.getCoordSysModel(), o = Yc(a, t), s = new Px(t, o);
                d(Fx, s.add, s), this._axisGroup.add(s.getGroup()), d(Nx, function(e) {
                    t.get(e + ".show") && this["_" + e](t, a);
                }, this), Xa(r, this._axisGroup, t), Vx.superCall(this, "render", t, e, n, i);
            }
        },
        remove: function() {
            this._splitAreaColors = null;
        },
        _splitLine: function(t, e) {
            var n = t.axis;
            if (!n.scale.isBlank()) {
                var i = t.getModel("splitLine"), r = i.getModel("lineStyle"), a = r.get("color");
                a = x(a) ? a : [ a ];
                for (var o = e.coordinateSystem.getRect(), l = n.isHorizontal(), u = 0, h = n.getTicksCoords({
                    tickModel: i
                }), c = [], f = [], d = r.getLineStyle(), p = 0; p < h.length; p++) {
                    var g = n.toGlobalCoord(h[p].coord);
                    l ? (c[0] = g, c[1] = o.y, f[0] = g, f[1] = o.y + o.height) : (c[0] = o.x, c[1] = g, 
                    f[0] = o.x + o.width, f[1] = g);
                    var v = u++ % a.length, m = h[p].tickValue;
                    this._axisGroup.add(new Vg({
                        anid: null != m ? "line_" + h[p].tickValue : null,
                        subPixelOptimize: !0,
                        shape: {
                            x1: c[0],
                            y1: c[1],
                            x2: f[0],
                            y2: f[1]
                        },
                        style: s({
                            stroke: a[v]
                        }, d),
                        silent: !0
                    }));
                }
            }
        },
        _splitArea: function(t, e) {
            var n = t.axis;
            if (!n.scale.isBlank()) {
                var i = t.getModel("splitArea"), r = i.getModel("areaStyle"), a = r.get("color"), o = e.coordinateSystem.getRect(), l = n.getTicksCoords({
                    tickModel: i,
                    clamp: !0
                });
                if (l.length) {
                    var u = a.length, h = this._splitAreaColors, c = F(), f = 0;
                    if (h) for (var d = 0; d < l.length; d++) {
                        var p = h.get(l[d].tickValue);
                        if (null != p) {
                            f = (p + (u - 1) * d) % u;
                            break;
                        }
                    }
                    var g = n.toGlobalCoord(l[0].coord), v = r.getAreaStyle();
                    a = x(a) ? a : [ a ];
                    for (var d = 1; d < l.length; d++) {
                        var m, y, _, w, b = n.toGlobalCoord(l[d].coord);
                        n.isHorizontal() ? (m = g, y = o.y, _ = b - m, w = o.height, g = m + _) : (m = o.x, 
                        y = g, _ = o.width, w = b - y, g = y + w);
                        var S = l[d - 1].tickValue;
                        null != S && c.set(S, f), this._axisGroup.add(new Fg({
                            anid: null != S ? "area_" + S : null,
                            shape: {
                                x: m,
                                y: y,
                                width: _,
                                height: w
                            },
                            style: s({
                                fill: a[f]
                            }, v),
                            silent: !0
                        })), f = (f + 1) % u;
                    }
                    this._splitAreaColors = c;
                }
            }
        }
    });
    Vx.extend({
        type: "xAxis"
    }), Vx.extend({
        type: "yAxis"
    }), du({
        type: "grid",
        render: function(t) {
            this.group.removeAll(), t.get("show") && this.group.add(new Fg({
                shape: t.coordinateSystem.getRect(),
                style: s({
                    fill: t.get("backgroundColor")
                }, t.getItemStyle()),
                silent: !0,
                z2: -1
            }));
        }
    }), nu(function(t) {
        t.xAxis && t.yAxis && !t.grid && (t.grid = {});
    }), uu(px("line", "circle", "line")), lu(gx("line")), iu(wy.PROCESSOR.STATISTIC, yx("line")), 
    t.version = sy, t.dependencies = ly, t.PRIORITY = wy, t.init = Zl, t.connect = $l, 
    t.disConnect = Kl, t.disconnect = Hy, t.dispose = Ql, t.getInstanceByDom = Jl, t.getInstanceById = tu, 
    t.registerTheme = eu, t.registerPreprocessor = nu, t.registerProcessor = iu, t.registerPostUpdate = ru, 
    t.registerAction = au, t.registerCoordinateSystem = ou, t.getCoordinateSystemDimensions = su, 
    t.registerLayout = lu, t.registerVisual = uu, t.registerLoading = cu, t.extendComponentModel = fu, 
    t.extendComponentView = du, t.extendSeriesModel = pu, t.extendChartView = gu, t.setCanvasCreator = vu, 
    t.registerMap = mu, t.getMap = yu, t.dataTool = Wy, t.zrender = up, t.number = xv, 
    t.format = kv, t.throttle = tl, t.helper = W_, t.matrix = Ef, t.vector = _f, t.color = Jf, 
    t.parseGeoJSON = X_, t.parseGeoJson = Y_, t.util = Z_, t.graphic = $_, t.List = t_, 
    t.Model = Qa, t.Axis = U_, t.env = Qc;
});